使用gSOAP连接到WCF Web服务

时间:2010-12-25 15:55:53

标签: c++ wcf gsoap

我正在编写一个简单的cmd客户端,尝试使用我开发的WCF Web服务,以测试如何使用非托管C ++连接到Web服务。

我一直在按照本教程http://www.blinnov.com/en/2008/01/22/wcf-service-unmanaged-client/进行操作,但仍无法成功使用该服务。

#include "BasicHttpBinding_USCOREIService1.nsmap"
#include "soapBasicHttpBinding_USCOREIService1Proxy.h"
#include <iostream>
#include <string>

using namespace std;


int main(int argc, char **argv)
{
BasicHttpBinding_USCOREIService1Proxy myProxy;
static const char* const endPoint = "http://localhost:50181/Service1.svc";

myProxy.soap_endpoint = endPoint;
_ns1__GetData param;
_ns1__GetDataResponse response;
param.fileName = &std::string("house.ifc");

if ( myProxy.GetData(&param, &response) == SOAP_OK) {
    cout << "Hello" << endl; //Succeeded
}
else {

    myProxy.soap_stream_fault(std::cerr);
}
return 0;
}

它总是给我 错误415错误:SOAP-ENV:服务器[无子代码] “HTTP错误” 详细信息:HTTP / 1.1 415不支持的媒体类型  我一直在努力完成它,但仍然没什么新鲜的。 :(

2 个答案:

答案 0 :(得分:1)

这是因为gSOAP客户端和WCF服务与SOAP 1.2不能很好地兼容。 如果你使用soapcpp2和&#34; -1&#34;它会工作。切换到强制SOAP 1.1。

我已经在Ubuntu上使用gSOAP 2.8.4对其进行了测试,但它确实有效。

答案 1 :(得分:0)

如果您的客户端将安装在Windows机器中,最好的方法是使用连接客户端和托管生成的代理的C ++ \ CLI桥接器,这是适用于所有类型的wcf绑定的唯一解决方案(HTTP, TCP,MSMQ,...)。

如果您选择其他图书馆,请确保它仅适用于HTTP绑定。