WSDL Web引用客户端和alter方法返回soap字符串

时间:2012-01-15 12:05:25

标签: wcf soap wsdl client

首先,我是WCF / WSDL领域的完整菜鸟,所以请耐心等待我

好的,我有一个WSDL,XSD用于复杂的消息类型,我在C#控制台应用程序中生成了一个测试客户端。我在reference.cs中添加了对WSDL获取代码的Web引用。

我调用了reference.cs中可用的方法,完美的作品。我在reference.cs中的方法上添加了soap trace扩展来记录soap请求/响应,工作正常。

在客户端我得到WSDL复杂类型类对象,我看到同步和异步调用都返回了一切。

现在这是我想要/尝试做的事情,我希望方法不返回反序列化的类对象,而是返回肥皂串,就像它们在流中和反序列化之前一样。

如何更改返回肥皂串的方法?这不是关于访问它们(我已经开始做)而是直接从方法返回。

请指出我正确的方向,否则我必须实施一个肥皂客,我试图避免。

我感谢任何帮助。如果我澄清事情,请告诉我。

更新

好的,先生,这就是我所做的:

使用svcutil从WSDL生成一个类,然后:

ServiceClient1 sc1 = new ServiceClient1();
TestResponseClass trc1 = sc1.method1("Testinput");
System.Xml.Serialization.XmlSerializer x = new    System.Xml.Serialization.XmlSerializer(typeof(TestResponseClass ),"http://xxx.xxx.xxx.local/Service1.wsdl");
StringWriter stringWriter = new StringWriter();
x.Serialize(stringWriter, trc1);
Console.Write(stringWriter.ToString());  

这样我得到了xml响应。更接近我愿意拥有的东西,我会尝试将其转换为肥皂反应。我希望我现在正在走上正轨。如果没有,请更正。快速学习和学习......我想

1 个答案:

答案 0 :(得分:1)

你可能会感到困惑。不要使用Web引用。这是传统的ASMX技术,已被WCF和“添加服务参考”取代。

不要将ASMX用于新开发。


我已经看到了你的更新,你确实很困惑。

您的代码有:

ServiceClient1 sc1 = new ServiceClient1();
TestResponseClass trc1 = sc1.method1("Testinput");

就是这样。你完成了。您已向服务发送了SOAP消息,并且已收到响应。根本不需要使用XML。