修改Web服务调用中的HTTP标头

时间:2018-09-10 14:48:58

标签: java-ee soap cxf websphere-liberty open-liberty

我有一个Web服务,客户在该服务中向http标头发送带单引号的SOAP操作(...; action ='myServiceOp')。 我们使用了传统 Websphere 应用程序服务器8,但已迁移到Websphere Liberty 。现在,Liberty不喜欢这个单引号,并以

回应
The given SOAPAction 'myServiceOp' does not match an operation.

所以我认为我使用处理程序来修改此参数,并在handleMessage方法中执行了以下操作:

Map<String, List<String>> requestHeaders = (Map<String, List<String>>) ctx.get(MessageContext.HTTP_REQUEST_HEADERS);
if(requestHeaders.get("Content-Type") != null) {
    List<String> cleanedContentType =  requestHeaders.get("Content-Type");
    String cleanedString = requestHeaders.get("Content-Type").get(0).replace("'", "");
    cleanedContentType.clear();
    cleanedContentType.add(cleanedString);
    requestHeaders.put("Content-Type", cleanedContentType);         
}

在我的日志中,我可以看到请求标头已相应设置,但是我的Web服务仍然会回答上述错误。

Liberty使用 CXF ,我们已经遇到了很多问题,因此我怀疑这在某种程度上干扰了。

server.xml中是否可能有Liberty配置?

如果需要拦截器(或某些特定于CXF的拦截器),我是否需要其他功能?因为上次尝试时出现 ClassNotFound 错误。

亲切的问候

0 个答案:

没有答案