#import "msxml3.dll"
using namespace MSXML2; // For Msxml3.dll.
#include "stdio.h"
void dump_com_error(_com_error &e)
{
printf("Error/n");
printf("/a/tCode = %08lx/n", e.Error());
printf("/a/tCode meaning = %s", e.ErrorMessage());
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
printf("/a/tSource = %s/n", (LPCSTR) bstrSource);
printf("/a/tDescription = %s/n", (LPCSTR) bstrDescription);
}
int main()
{
HRESULT hr = CoInitialize(NULL);
try{
IXMLHTTPRequestPtr pXMLHTTPReq = NULL;
hr=pXMLHTTPReq.CreateInstance(__uuidof(XMLHTTP30));
//Uncomment the following lines if you are using ServerXMLHTTPRequest.
//IServerXMLHTTPRequestPtr pXMLHTTPReq = NULL;
//hr=pXMLHTTPReq.CreateInstance(__uuidof(ServerXMLHTTP30));
hr=pXMLHTTPReq->open("POST", "http://localhost", VARIANT_TRUE);
hr = pXMLHTTPReq->setRequestHeader("charset", "UTF-8");
hr=pXMLHTTPReq->send("<?xml version=/"1.0/" encoding=/"UTF-8/"?><REQUEST>request1</REQUEST>");
long readyState = READYSTATE_UNINITIALIZED;
MSG msg;
while (readyState != READYSTATE_COMPLETE)
{
//Without this message pump, readyState does not change.
if (PeekMessage(&msg, 0, 0 ,0, PM_REMOVE))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
readyState = pXMLHTTPReq->GetreadyState();
}
BSTR bstrbody;
pXMLHTTPReq->get_responseText(&bstrbody);
_bstr_t bstrtbody(bstrbody);
printf("%s/n",(LPCTSTR)bstrtbody);
//MessageBox(NULL, (LPCTSTR)bstrbody, "readystate", MB_OK);
long status= pXMLHTTPReq->Getstatus();
}
catch(_com_error &e)
{
dump_com_error(e);
}
return 0;
}