【问题标题】:WSE 3.0 set content typeWSE 3.0 设置内容类型
【发布时间】:2009-06-02 11:18:47
【问题描述】:

我有一个简单的问题,我似乎无法理解。

情况如下:

  • 我们使用 WSE 3 创建并向 Web 服务发送请求。
  • Web 服务是用 Java 编写的。

大多数情况都很好,但我似乎无法对 WebResuest 或 WebResponse 的 ContentType 产生影响,这会导致一些问题。

我不断收到的错误消息如下:

客户端发现响应内容类型为“application/xop+xml;type="text/xml;charset=utf-8"”,但预期为“text/xml”。 请求失败并显示错误消息:....

在错误消息的详细信息中,它具有对来自服务器的调用的响应,并且可以正常通过。 显然它现在并不好,因为它正在经历一个例外:)。

那么,如何设置响应的预期内容类型?

如果我是正确的,WSE 3.0 中的请求和响应必须具有相同的 ContentType。所以我想我会尝试将 request.Headers[HttpRequestHeader.ContentType] 设置为预期的,但没有运气。 (另外,我可以在很多地方设置 HttpWebRequest 的内容类型,但似乎没有一个可以解决问题)

【问题讨论】:

  • 您可能已经知道这一点,但请确定:您知道 WSE 已过时,对吧? VS2008及以上版本不支持?
  • 是的,我听说过。我们仍然决定使用它的原因是我们在使用 WCF 时遇到了一些障碍并且没有简单的解决方案。 WCF 文档的缺乏也没有真正的帮助,也没有我不是 Web 服务专家的事实。 (虽然我正在尝试:))

标签: c# web-services wse3.0


【解决方案1】:

这个问题已经很幸运的解决了,下面给出解决方案以供日后参考:

我们的客户端继承自 WebServicesClientProtocol 类,其中有一个名为 GetWebResponse(..) 的方法。 简单地覆盖该方法并更改响应的 ContentType 似乎对我们有用。

    protected override WebResponse GetWebResponse(System.Net.WebRequest request)
    {
        WebResponse response = base.GetWebResponse(request);
        response.Headers[HttpResponseHeader.ContentType] = "text/xml";
        return response;
    }

【讨论】:

    猜你喜欢
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 2010-12-27
    • 2012-12-29
    • 2012-10-19
    • 2013-03-15
    • 2016-09-28
    相关资源
    最近更新 更多