web-services - 使用 ServiceStack 访问 SOAP 网络服务

标签 web-services soap servicestack

我正在创建与 ServiceStack 的客户端/服务器应用程序互通,并且运行良好,但我还需要访问外部 SOAP Web 服务。

我尝试使用 Soap12ServiceClient访问它,但我找不到任何示例,然后我采用了实际有效的添加服务引用 WCF 方式,但创建了大量代码。

是否可以使用 Soap12ServiceClient以同样简单的方式使用 JsonServiceClient发送消息/请求并接收消息/响应?如果是这样,你能帮我或指点我一个样本吗?

最佳答案

我不确定你被困在哪里了 ServiceStack's C# Service Clients实现相同的 IServiceClient所以它们可以以相同的方式使用。以下是所有 ServiceStack 内置 C# 服务客户端的示例 calling the same Hello World service :

[TestFixture]
public class HelloWorldServiceClientTests
{
    public static IEnumerable ServiceClients
    {
        get
        {
            return new IServiceClient[] {
                new JsonServiceClient(Config.ServiceStackBaseUri),
                new JsvServiceClient(Config.ServiceStackBaseUri),
                new XmlServiceClient(Config.ServiceStackBaseUri),
                new Soap11ServiceClient(Config.ServiceStackBaseUri),
                new Soap12ServiceClient(Config.ServiceStackBaseUri)
            };
        }
    }

    [Test, TestCaseSource("ServiceClients")]
    public void HelloWorld_with_Sync_ServiceClients(IServiceClient client)
    {
        var response = client.Send<HelloResponse>(new Hello { Name = "World!" });

        Assert.That(response.Result, Is.EqualTo("Hello, World!"));
    }
}

尽管 SOAP 的工作方式类似于任何其他 C# 客户端,但以这种方式使用它并不常见,因为如果您能够使用通用 C# SOAP 服务客户端,您也可能能够使用任何其他服务客户端所有这些都比 SOAP 更快、更有弹性、更可版本化——除了它能够生成您说无论如何都不想做的客户端代理之外,它实际上没有比其他格式更好的质量。

如果您不确定应该使用哪种端点或格式,我 recommend reading my Interview on InfoQ其中讨论了 SOAP 的缺点以及使用其他格式的好处。

关于web-services - 使用 ServiceStack 访问 SOAP 网络服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15421585/

相关文章:

web-services - Grails:公开 LoginController 以进行编程登录

java - 无法使用 JSON REST WS

python - 使用 Suds 的端口类型异常

rest - ServiceStack Web 服务的存储转发故障转移解决方案

c# - ServiceStack 服务可以包含多个方法吗?

android - 如何使用 KSOAP2 从 body 获取数据 - android

java - 使用 XML 的 REST Web 服务

Python 泡沫错误 "' NoneType' 对象没有属性 'promotePrefixes'“

java - Spring Boot Maven 集成测试给出 ClassNotFoundException

c# - 处理 servicestack Html5ModeFeature 插件中的任何默认文档类型