WSE 3.0设置内容类型

时间:2009-06-02 11:18:48

标签: c# web-services wse3.0

对于你来说,我有一个简单的问题,我似乎无法理解。

情况如下:

  • 我们使用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的内容类型,但似乎没有一个可以做到这一点)

1 个答案:

答案 0 :(得分:1)

这已经幸运地解决了,所以这里是未来参考的解决方案:

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

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