3

我正在编写一个简单的 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:Server[no subcode] "HTTP Error" 详细信息:HTTP/1.1 415 Unsupported Media Type 我整天都在尝试完成它,但仍然没有什么新东西。:(

4

2 回答 2

1

这是因为 gSOAP 客户端和 WCF 服务不能很好地与 SOAP 1.2 配合使用。如果您使用带有“-1”开关的 soapcpp2 来强制 SOAP 1.1,它将起作用。

我已经在 Ubuntu 上使用 gSOAP 2.8.4 对其进行了测试,并且可以正常工作。

于 2014-05-13T15:50:28.703 回答
0

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

如果您选择另一个库,请确保它仅适用于 HTTP 绑定。

于 2011-01-27T20:31:47.390 回答