我正在使用JaxWSPortProxyFactoryBean
生成的端口代理。
我给了它我的WSDL文件,据我所知,它正确地接触到了服务。我有另外一种服务以类似的方式配置。
我遇到的问题是这项特殊服务似乎执行不力。当我发送请求时,它会使用Content-Type
text
代替text/xml
进行回复。有些东西正在接受该响应并抛出异常,因为它不是它所期望的内容类型。
经过一番广泛的谷歌搜索后,我发现了HandlerResolver
。我尝试使用自定义Handler
:
public class ContentTypeHandler implements SOAPHandler<SOAPMessageContext> {
@Override public boolean handleMessage(SOAPMessageContext context) {
//many other things tried in here
Map<String, List<String>> theHeaders = new HashMap<String, List<String>>();
theHeaders.put("Accept", Collections.singletonList("application/x-gzip"));
context.put(MessageContext.HTTP_REQUEST_HEADERS, theHeaders);
}
}
我还在处理程序的close
方法中设置了一个断点。我可以看到HTTP响应标头,服务器正在用200响应我。所以我到达服务器就好了,但它发送了错误的内容类型。我无法弄清楚我的处理程序在何处或如何更改预期的内容类型。
我期望调用处理程序的handleFault
方法,这是我处理该问题的地方。但是,唉,这个功能甚至从未被调用过。所以在我有机会告诉它之前,事情正在爆发。