我正在编写一个简单的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(¶m, &response) == SOAP_OK) {
cout << "Hello" << endl; //Succeeded
}
else {
myProxy.soap_stream_fault(std::cerr);
}
return 0;
}
它总是给我 错误415错误:SOAP-ENV:服务器[无子代码] “HTTP错误” 详细信息:HTTP / 1.1 415不支持的媒体类型 我一直在努力完成它,但仍然没什么新鲜的。 :(
答案 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绑定。