使用 gSOAP 连接到 WCF Web 服务
Posted
技术标签:
【中文标题】使用 gSOAP 连接到 WCF Web 服务【英文标题】:Connecting to WCF web service using gSOAP 【发布时间】: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(¶m, &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 服务? 【参考方案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 绑定。
【讨论】:
感谢您的建议。但我在该链接的最后一篇文章中找到了解决方案social.msdn.microsoft.com/Forums/en-US/wcf/thread/…以上是关于使用 gSOAP 连接到 WCF Web 服务的主要内容,如果未能解决你的问题,请参考以下文章
使用?wsdl URI查询将LinqPad连接到WCF Web服务
尝试将 ASP.NET CORE 2 Web API 应用程序连接到 WCF 服务
有没有办法让客户端连接到现有的 WCF Web Http 服务而不使用 .Net Core 2 中的 WebHttpBinding?