使用ServiceStack访问SOAP Web服务

时间:2013-03-14 22:41:45

标签: web-services soap servicestack

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

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

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

1 个答案:

答案 0 :(得分:1)

由于ServiceStack's C# Service Clients的所有IServiceClient都实现了相同的[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!")); } } ,因此我们无法确定您在哪里被卡住,因此可以以相同的方式使用它们。以下是ServiceStack所有内置C#服务客户端calling the same Hello World service的示例:

{{1}}

虽然SOAP的工作方式类似于任何其他C#客户端,但以这种方式使用它并不常见,因为如果您能够使用通用的C#SOAP服务客户端,那么您也可能使用任何其他服务客户端比SOAP更快,更有弹性,更具版本性 - 除了能够生成客户端代理之外,它实际上没有其他格式的兑换质量,无论如何你都不想这样做。

如果你没有决定使用哪个端点或格式,我应该使用I recommend reading my Interview on InfoQ来讨论SOAP的缺点以及使用其他格式的好处。