【问题标题】:Consuming wsdl soap service with servicestack使用 servicestack 使用 wsdl soap 服务
【发布时间】:2015-07-29 23:36:15
【问题描述】:

我一直在尝试使用 asp.net C# mvc5 应用程序使用 wsdl soap 服务。原始服务是用 php 编写的,理想情况下应该没关系,但我无法完成这项工作。我刚刚了解到 servicestack 是一种适用于 mvc 架构的替代方案。我正在寻找有关如何使用 servicestack 使用 wsdl soap 服务的指示,对此的任何帮助将不胜感激。我很高兴购买可以指导我如何将这两种方法中的任何一种用于我的 mvc 应用程序的书籍

【问题讨论】:

    标签: asp.net-mvc-4 soap wsdl servicestack


    【解决方案1】:

    ServiceStack 允许通过 SOAP 端点公开您的 .NET 服务,方法是自动为 SOAP Compatible Services 生成 WSDL 和 XSD @。

    但 ServiceStack 不提供通用 SOAP 客户端来使用任何第 3 方 SOAP 服务。 SOAP 是unnecessarily complex and brittle format,您最好的选择是询问 PHP SOAP 服务的开发人员是否可以推荐任何 .NET SOAP 客户端,因为除非经过测试和验证,否则任何独立的 SOAP 客户端实现都不太可能毫无问题地互操作。兼容。

    最可靠的选择是将 SOAP XML 视为一个字符串,您可以在其中构造一个原始 SOAP 请求并将其 POST 到远程端点,例如 SOAP 1.1 请求:

    var soapRequest = @"<?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>"
      + requestXml 
      + "</soap:Body></soap:Envelope>";
    

    使用HTTP Utils POST'ing XML 的示例:

    var soapResponseXml = soapEndpointUrl.PostXmlToUrl(soapRequest, 
      httpReq => httpReq.Headers["SOAPAction"] = requestName);
    

    然后使用 WCF 的 Message.CreateMessage() 解析 SOAP 响应,如果即使 WCF 通用消息不支持 SOAP 响应,您可以尝试使用类似 XLINQ's XDocument 的东西将其动态解析为 XML。

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多