#import "msxml3.dll"
using namespace MSXML2;
#import "C:/Program Files/Common Files/MSSoap/Binaries/MSSOAP1.dll" /
exclude("IStream", "ISequentialStream", "_LARGE_INTEGER", /
"_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME")
using namespace MSSOAPLib;
#include "stdio.h"
#include <string>
void main()
{
CoInitialize(NULL);
try
{
ISoapSerializerPtr Serializer;
ISoapReaderPtr Reader;
ISoapConnectorPtr Connector;
// 与Web服务连接
Connector.CreateInstance(__uuidof(HttpConnector));
Connector->Property["EndPointURL"] = "http://www.docin.com//services/UserWebService";
Connector->Connect();
// 开始消息
//Connector->Property["SoapAction"] = "";
Connector->BeginMessage();
if (true)
{
// 创建SoapSerializer对象
Serializer.CreateInstance(__uuidof(SoapSerializer));
// 将serializer连接到connector的输入字符串
Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));
// 创建SOAP消息
Serializer->startEnvelope("","",""); // default: SOAP-ENV
Serializer->startBody("");
Serializer->startElement("userLogin","http://xxx.com","","tns");
Serializer->startElement("in0","","","tns");
Serializer->startElement("password","http://xxx.com","","ns1");
Serializer->writeString("xxxx");
Serializer->endElement();
Serializer->startElement("xxx","http://xxx.com","","ns1");
Serializer->writeString("xxxx");
Serializer->endElement();
Serializer->startElement("xxx","http://xxx.com","","ns1");
Serializer->writeString("xxxx");
Serializer->endElement();
Serializer->startElement("xxx","http://xxx.com","","ns1");
Serializer->writeString("xxxx");
Serializer->endElement();
Serializer->startElement("xxx","http://xxx.com","","ns1");
Serializer->writeString("xxxx");
Serializer->endElement();
Serializer->startElement("save","http://xxx.com","","ns1");
Serializer->writeString("1");
Serializer->endElement();
Serializer->endElement();
Serializer->endElement();
Serializer->endBody();
Serializer->endEnvelope();
}
// 将该消息发送给web服务
Connector->EndMessage();
// 读取响应
Reader.CreateInstance(__uuidof(SoapReader));
// 将reader联接到connector的输出字符串
Reader->Load(_variant_t((IUnknown*)Connector->OutputStream), "");
// 显示结果
//printf("Answer: %s/n", (const char *)Reader->RPCResult->text);
MSXML2::IXMLDOMElement* pBody = NULL;
HRESULT hr = Reader->get_Body(&pBody);
if (SUCCEEDED(hr) && pBody)
{
IXMLDOMNodePtr pFirst = pBody->GetfirstChild(); //ns1:userLoginResponse
if (pFirst)
{
pFirst = pFirst->GetfirstChild(); //ns1:out
if (pFirst)
pFirst = pFirst->GetfirstChild(); //URL
while (pFirst)
{
_bstr_t bn = pFirst->GetnodeName();
_bstr_t bs = pFirst->Gettext();
std::string aa = bn;
std::string ss = bs;
printf("name:%s, ss:%s/n", aa.c_str(), ss.c_str());
if (aa == "xxx")
{
//http://img.xxx.com
}
pFirst = pFirst->GetnextSibling();
}
}
}
Serializer.Release();
Connector.Release();
Reader.Release();
}
catch(_com_error e)
{
int a = 0;
}
CoUninitialize();
}