我正在尝试做这个人在这里手动解析SOAP响应的事情: http://www.codeproject.com/KB/webservices/Java_WS_NET.aspx
我的问题是我从供应商的java web服务生成的代理类wsdl没有我可以覆盖的名为GetWebResponse的方法。
所以当文章的作者这样做时:
WR = MyBase.GetWebResponse(the_webRequest)
我的课程中没有等效的GetWebResponse,所以我该怎么办?
答案 0 :(得分:3)
这带回了几年前的一些回忆。同样的问题,AXIS和.Net并没有很好地合作。在我的情况下,它与AXIS有关,希望将NULL属性设置为空字符串,.Net假设可以忽略NULL属性(或类似的东西,它已经有一段时间了。)
无论如何,您可能正在添加服务引用而不是Web引用。删除当前引用并添加新引用,但不要在“添加服务引用”屏幕上输入任何内容,单击“高级”按钮,然后单击“添加Web引用”按钮。这最终会为您提供一个可以覆盖GetWebResponse()
的课程。
我无法告诉你两者之间的区别是什么,除了在VS2008中隐藏了Web Reference以支持服务参考。
修改强>
获得Web参考后,您需要从中获取新类。对于下面的示例,我将从Amazon获取以下WSDL:
http://soap.amazon.com/schemas2/AmazonWebServices.wsdl
添加一个名为Test
的新类(或者可能是一个更好的名字)。让该类继承服务的主类。 (主要类可能是Reference.cs
中列出的第一个类,但它将继承自SoapHttpClientProtocol
)。然后重写:
class Test : com.amazon.soap.AmazonSearchService
{
protected override System.Net.WebResponse GetWebResponse(System.Net.WebRequest request)
{
return base.GetWebResponse(request);
}
}