WSE 3.0设置的内容类型
问题描述:
我有一个简单的问题,对你来说,我似乎无法摆脱困境。WSE 3.0设置的内容类型
的情况如下:
- 我们创建并发送请求到Web服务,使用WSE 3
- Web服务是用Java编写。
大部分的事情都很好,但我似乎无法对WebResuest或WebResponse的ContentType产生影响,这会导致一些问题。
总是收到的errormessage的是以下内容:
客户端发现的响应的内容类型 '应用/ XOP + xml的;类型= “文本/ XML;字符集= UTF-8”',但预期“文本/ XML”。 请求失败,出现错误消息:....
在错误消息的详细信息中,它对来自服务器的呼叫作出了响应,并且它正常通过。 显然它不是很好,因为它正在通过例外:)。
那么,我该如何设置响应的预期内容类型?
如果我没有错,WSE 3.0中的请求和响应必须具有相同的ContentType。所以我想我会尝试设置request.Headers [HttpRequestHeader.ContentType]到预期的,但没有运气。 (还可以,我可以设置HttpWebRequest的的的contentType在不少地方,但他们都不做的伎俩)
答
这已经幸运的是解决了,所以这里的供将来参考的解决方案:
我们的客户继承来自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;
}
您可能已经知道这一点,但只是要确定:您知道WSE已过时,对吗?它不支持VS2008或以上? – 2009-06-02 13:38:32