用M$的SoapToolkit+VC6进行Web Service Client的开发

来源:互联网 发布:乐易网络招聘 编辑:程序博客网 时间:2024/05/16 15:16

好郁闷哦,用Java调用Web Service习惯了再回到VC上,哎,突然发现自己不适应了!!

真是的,是不是自己真的老了??

让我们开始吧。

首先引入必须得库

#import "msxml3.dll"

#import "C:/Program Files/Common Files/MSSoap/Binaries/mssoap1.dll" /
  exclude("IStream","ISequentialStream","_LARGE_INTEGER",/
  "_ULARGE_INTEGER","tagSTATSTG","_FILETIME")

再使用相应的命名空间

using namespace MSXML2;

using namespace MSSOAPLib;

接下来就可以进行操作了

代码片段如下:

ISoapSerializerPtr Serializer;
 ISoapReaderPtr Reader;
 ISoapConnectorPtr Connector;

 //实例化一个连接器
 Connector.CreateInstance(__uuidof(HttpConnector));

 Connector->Property["EndPointURL"]=http://135.233.131.67:8080/axis/services/TestService;
 
Connector->Connect();
 Connector->Property["SoapAction"]="TestMethods";
 Connector->BeginMessage();
 Serializer.CreateInstance(__uuidof(SoapSerializer));
 Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));
 Serializer->startEnvelope("","","");
 Serializer->startBody("");
 Serializer->startElement("getName","
http://135.233.131.67:8080/axis/services/TestService?method=TestMethods","","m");
 //传递第一个参数
 Serializer->startElement("ParameterOne","","","");
 Serializer->writeString("ValueOne");
 Serializer->endElement();
 //传递第二个参数
 Serializer->startElement("ParameterTwo","","","");
 Serializer->writeString("ValueTwo");
 Serializer->endElement();
 
 Serializer->endElement();
 Serializer->endBody();
 Serializer->endEnvelope();
 Connector->EndMessage();
 Reader.CreateInstance(__uuidof(SoapReader));


 Reader->Load(_variant_t((IUnknown*)Connector->OutputStream),"");

//取出结果,按照帮助文档文档的说法是:Returns the first child element of the first entry in the <Body>  

//element of a Simple Object Access Protocol (SOAP) message.

printf("Return Message is : %s/n",(const char*)Reader->RPCResult->text);

OK,现在编译、运行,就可以看到结果了

原创粉丝点击