.net - 如何覆盖 GetWebResponse

标签 .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)

我的类(class)中没有等效的 GetWebResponse,我该怎么办?

最佳答案

这让我想起了几年前的一些记忆。同样的问题,AXIS 和 .Net 不能很好地协同工作。在我的例子中,它与 AXIS 有关,希望将 NULL 属性设置为空字符串,而 .Net 假设可以忽略 NULL 属性(或类似的东西,已经有一段时间了)。

无论如何,您添加的可能是服务引用而不是 Web 引用。删除当前引用并添加一个新引用,但不要在“添加服务引用”屏幕上输入任何内容,而是单击“高级”按钮,然后单击“添加 Web 引用”按钮。这最终会为您提供一个类,您可以在其中覆盖 GetWebResponse()

除了在 VS2008 中 Web Reference 被隐藏以支持 Service 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);
    }
}

关于.net - 如何覆盖 GetWebResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5490298/

相关文章:

c# - 替代多个使用 block

c# - 从其他类中查找表单实例

java - 如果我有 wsdl 文件而不生成 stub java 类,如何调用 Web 服务?

Java Spring启动: Exception Handling

c# - 如何调试 soap web 服务?

c# - 如何使用 Automapper 函数调用递归地将实体映射到 View 模型?

.net - 在 Xunit2 中自定义测试名称

.net - Web 服务的依赖注入(inject)?

java - 如何使用外部应用程序获取 Soap Web 服务的请求和响应详细信息?

java - 如何在 wsdl 中指定 java.util.HashMap (key ==> value)