【问题标题】:Connecting to WCF web service using gSOAP使用 gSOAP 连接到 WCF Web 服务
【发布时间】:2010-12-25 15:55:52
【问题描述】:

我正在编写一个简单的 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 错误” 详细信息:HTTP/1.1 415 不支持的媒体类型 我整天都在努力完成它,但仍然没有什么新鲜事。 :(

【问题讨论】:

  • 我不知道问题出在哪里?我已经按照教程中的说明使用了 BasicHttpBinding,但仍然出现相同的消息。有没有其他方法可以实现,使我能够使用非托管 C++ 连接到 WCF Web 服务?

标签: c++ wcf gsoap


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多