Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This C/C++ code performs the following steps:
Creates an
IXMLHTTPRequestobject,pIXMLHTTPRequest.Uses the
openmethod and thesendmethod to request the contact information for "John Doe".Uses the
responseXMLproperty to retrieve the XML data returned from the server.Displays the XML data to the console.
C/C++ Source File (XMLOverHTTP.cpp)
#include <stdio.h>
#include <tchar.h>
#import <msxml6.dll>
// Macro that calls a COM method returning HRESULT value.
#define CHK_HR(stmt) do { hr=(stmt); if (FAILED(hr)) goto CleanUp; } while(0)
// Macro that releases a COM object if not NULL.
#define SAFE_RELEASE(p) do { if ((p)) { (p)->Release(); (p) = NULL; } } while(0)
void XMLOverHTTP()
{
MSXML2::IXMLHTTPRequestPtr pIXMLHTTPRequest;
MSXML2::IXMLDOMDocumentPtr pXMLDoc;
BSTR bstrString = NULL;
HRESULT hr = S_OK;
try
{
CHK_HR(pIXMLHTTPRequest.CreateInstance(__uuidof(MSXML2::XMLHTTP60), NULL, CLSCTX_INPROC_SERVER));
CHK_HR(pIXMLHTTPRequest->open("GET", "https://localhost/sxh/contact.asp?SearchID=John Doe", _variant_t(VARIANT_FALSE)));
CHK_HR(pIXMLHTTPRequest->send());
pXMLDoc = pIXMLHTTPRequest->responseXML;
bstrString = pXMLDoc->xml;
if(bstrString)
{
printf("%S\n", bstrString);
}
}
catch (_com_error errorObject)
{
printf("Exception thrown, HRESULT: 0x%08x", errorObject.Error());
}
CleanUp:
SysFreeString(bstrString);
}
int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr = CoInitialize(NULL);
if(SUCCEEDED(hr))
{
XMLOverHTTP();
CoUninitialize();
}
return 0;
}
To add the XMLOverHTTP source code to the project
Create a new C++ source file. For detailed instructions on how to do this, see Set Up My Visual C++ Project. Name the file XMLOverHTTP.cpp.
Copy the C/C++ source code above, and paste it into the source file you just created.
Next, we'll set up a virtual directory. You must complete this step before you build and run the application.