c++使用toolsoapkit调用webservice
2013-10-24 10:16
218 查看
_bstr_t ProWebservice::queryWebservice(const char* URL, const char* Nmspace, const char* method, vector<string>& v,vector<string>& vParaName)
{
ISoapSerializerPtr Serializer;
ISoapReaderPtr Reader;
ISoapConnectorPtr Connector;
try
{
// Connect to the service
Connector.CreateInstance(__uuidof(HttpConnector30));
// 接口位置,开放的asmx地址
Connector->Property["EndPointURL"] = URL;
Connector->Connect();
// 这一句存在的价值是...
Connector->Property["SoapAction"] = _bstr_t(Nmspace) + _bstr_t(method);
Connector->BeginMessage();
Serializer.CreateInstance(__uuidof(SoapSerializer30));
// 将serializer连接到connector的输入字符串
Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));
// 创建SOAP消息
Serializer->StartEnvelope("soap", "", "");
Serializer->StartBody("body");
// 命名空间必须有
Serializer->StartElement(method, Nmspace, "", "");
for(int i=0;i<v.size();i++)
{
Serializer->StartElement(vParaName.at(i).c_str(), Nmspace, "", "");
Serializer->WriteString(v.at(i).c_str());
Serializer->EndElement();
}
Serializer->EndElement();
Serializer->EndBody();
Serializer->EndEnvelope();
Connector->EndMessage(); // Send the message to the web service
}
catch(_com_error& e)
{
log.writelog((LPSTR)e.Description());
return "";
}
// 读取响应
Reader.CreateInstance(__uuidof(SoapReader30));
Reader->Load(_variant_t((IUnknown*)Connector->OutputStream), "");
//return Reader->RpcResult->xml;
MSXML2::IXMLDOMNodePtr node;
node=Reader->RpcResult->GetfirstChild();
_bstr_t Rcode,Rmessage,Rltstring;
Rcode="0";
Rltstring="";
while(node!=nullptr)
{
if(node->GetnodeName()==(_bstr_t)"ReturnCode")
{
Rcode=node->Gettext();
}
if(node->GetnodeName()==(_bstr_t)"ReturnMessage")
{
Rmessage=node->Gettext();
}
if(node->GetnodeName()==(_bstr_t)"DataSetXmlText")
{
Rltstring=node->Gettext();
}
node=node->nextSibling;
}
if(Rcode!=(_bstr_t)"0"&&Rcode!=(_bstr_t)"OK")
{
log.writelog((string)method+((string)"接口调用失败,返回信息")+(string)Rmessage);
}
return Rltstring;
//return Reader->RpcResult->text;
}
{
ISoapSerializerPtr Serializer;
ISoapReaderPtr Reader;
ISoapConnectorPtr Connector;
try
{
// Connect to the service
Connector.CreateInstance(__uuidof(HttpConnector30));
// 接口位置,开放的asmx地址
Connector->Property["EndPointURL"] = URL;
Connector->Connect();
// 这一句存在的价值是...
Connector->Property["SoapAction"] = _bstr_t(Nmspace) + _bstr_t(method);
Connector->BeginMessage();
Serializer.CreateInstance(__uuidof(SoapSerializer30));
// 将serializer连接到connector的输入字符串
Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));
// 创建SOAP消息
Serializer->StartEnvelope("soap", "", "");
Serializer->StartBody("body");
// 命名空间必须有
Serializer->StartElement(method, Nmspace, "", "");
for(int i=0;i<v.size();i++)
{
Serializer->StartElement(vParaName.at(i).c_str(), Nmspace, "", "");
Serializer->WriteString(v.at(i).c_str());
Serializer->EndElement();
}
Serializer->EndElement();
Serializer->EndBody();
Serializer->EndEnvelope();
Connector->EndMessage(); // Send the message to the web service
}
catch(_com_error& e)
{
log.writelog((LPSTR)e.Description());
return "";
}
// 读取响应
Reader.CreateInstance(__uuidof(SoapReader30));
Reader->Load(_variant_t((IUnknown*)Connector->OutputStream), "");
//return Reader->RpcResult->xml;
MSXML2::IXMLDOMNodePtr node;
node=Reader->RpcResult->GetfirstChild();
_bstr_t Rcode,Rmessage,Rltstring;
Rcode="0";
Rltstring="";
while(node!=nullptr)
{
if(node->GetnodeName()==(_bstr_t)"ReturnCode")
{
Rcode=node->Gettext();
}
if(node->GetnodeName()==(_bstr_t)"ReturnMessage")
{
Rmessage=node->Gettext();
}
if(node->GetnodeName()==(_bstr_t)"DataSetXmlText")
{
Rltstring=node->Gettext();
}
node=node->nextSibling;
}
if(Rcode!=(_bstr_t)"0"&&Rcode!=(_bstr_t)"OK")
{
log.writelog((string)method+((string)"接口调用失败,返回信息")+(string)Rmessage);
}
return Rltstring;
//return Reader->RpcResult->text;
}
相关文章推荐
- c/c++ 使用gsoap调用webservice
- VS2010使用c++、gSOAP调用WebService 图文教程
- C++使用gsoap调用webservice接口
- c/c++使用gsoap发布和调用webservice
- C++调用gSoap编写的WEBSERVICE与C#.NET间接口自定义结构体不能重复使用
- C++使用gSoap调用C#写的webservice中文乱码问题
- 使用C/C++程序通过gSOAP调用WebService
- Silverlight实用窍门系列:22.Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】
- c/c++使用gsoap发布和调用webservice
- Silverlight实用窍门系列:22.Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】
- 22.Silverlight使用WebService调用C++,Delphi编写的DLL文件
- c/c++使用gsoap调用wcf发布的webservice
- c++ 使用 gsoap 调用 WebService 中文乱码
- 使用C++.NET调用webservice实战
- VS 2005中使用C#创建及调用WebService完整实例
- webservice学习之使用java发布webservice以及调用
- JAVA使用JNI调用C/C++动态库
- python使用suds来调用webservice
- android使用C/C++调用SO库
- linux下使用jni实现c++调用java程序(2)找不到java类的问题