【问题标题】:WCF and gSOAP - interoperable code?WCF 和 gSOAP - 可互操作的代码?
【发布时间】:2010-10-16 11:40:01
【问题描述】:

我正在尝试使用 SOAP 1.2 协议编写一个简单的 WCF 服务器 + gSOAP 客户端概念验证应用程序。这是服务器代码:

[ServiceContract(Namespace="http://test.com")]
public interface IService1
{
    [OperationContract]
    void HelloWorld();
}

[ServiceBehavior(Namespace = "http://test.com")]
public class Service1 : IService1
{
    public void HelloWorld()
    {
    }
}

static void Main(string[] args)
{
    var svc =  new Service1();
    Uri uri = new Uri("http://localhost:8201/Service1");
    ServiceHost host = new ServiceHost(typeof(Service1), uri);
    host.Description.Namespace = "http://test.com";

    var binding = new WSHttpBinding() { Namespace = "http://test.com" };
    ServiceEndpoint endpoint = host.AddServiceEndpoint(typeof(IService1), binding, uri);
    endpoint.Behaviors.Add(new InlineXsdInWsdlBehavior());

    host.Description.Behaviors.Add(new ServiceMetadataBehavior() { HttpGetEnabled = true });
    var mex = host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding(), "mex");
    host.Open();

    Console.ReadLine();
}

然后我启动服务并使用以下命令生成代码:

wsdl2h.exe -gyf -t WS/WS-typemap.dat -o Service.h http://localhost:8201/Service1?wsdl WS/WS-Addressing05.xsd
soapcpp2.exe -C -L -w -x -i -2 Service.h -ID:\...\gsoap-2.7\gsoap\import

然后我编译以下 C++ 代码:

#include "soapWSHttpBinding_USCOREIService1Proxy.h"
#include "WSHttpBinding_USCOREIService1.nsmap"
#include "stdsoap2.h" 

int _tmain(int argc, _TCHAR* argv[])
{
    WSHttpBinding_USCOREIService1Proxy svc;

    _ns1__HelloWorld req;
    _ns1__HelloWorldResponse rsp;
    int hr = svc.HelloWorld( &req, &rsp );
    if ( hr != SOAP_OK )
    {
        _tprintf( _T("Error: %i\n"), hr );
    }

    return 0;
}

这会生成错误 8 (SOAP_MUSTUNDERSTAND)。有没有人曾经生成工作 WCF 到 gSOAP 链接?我做错了什么?

【问题讨论】:

    标签: web-services soap wcf wcf-client gsoap


    【解决方案1】:

    我猜-soapcpp2 中的开关已经修复了错误 8,所以现在的开关是:

    soapcpp2.exe -C -L -w -x -i -2 -a Service.h -I<...path...>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-17
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 2011-06-06
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多