如何覆盖GetWebResponse

时间:2011-03-30 18:06:30

标签: .net web-services soap interop

我正在尝试做这个人在这里手动解析SOAP响应的事情: http://www.codeproject.com/KB/webservices/Java_WS_NET.aspx

我的问题是我从供应商的java web服务生成的代理类wsdl没有我可以覆盖的名为GetWebResponse的方法。

所以当文章的作者这样做时:

WR = MyBase.GetWebResponse(the_webRequest)

我的课程中没有等效的GetWebResponse,所以我该怎么办?

1 个答案:

答案 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);
    }
}