我正嘗試在WebSphere 8.5.5.2上使用JAX-WS在出站SOAP請求上設置自定義標頭。下面方法中的BindingProvider是通過JNDI獲取用@ServiceRef註釋聲明的服務。如何將HTTP頭添加到WebSphere 8.5中的JAX-WS請求中?
void setHeader(BindingProvider provider, String name, String value) {
Map<String, Object> context = provider.getRequestContext();
Map<String, List<String>> headers = null;
if (context.containsKey(MessageContext.HTTP_REQUEST_HEADERS)) {
headers = (Map<String, List<String>>)
context.get(MessageContext.HTTP_REQUEST_HEADERS);
}
if (headers == null) {
headers = new HashMap<String, List<String>>();
context.put(MessageContext.HTTP_REQUEST_HEADERS, headers);
}
headers.put(name, Arrays.asList(value));
}
我認爲這裏的關鍵與WebSphere有關。如果我不是把HTTP報頭到上下文的IBM特定的條目:
com.ibm.websphere.webservices.Constants.REQUEST_TRANSPORT_PROPERTIES
頁眉得到妥善安置到SOAP HTTP請求。請注意,如果值不包含在List實例中。
是否有人使用MessageContext.HTTP_REQUEST_HEADERS
在WebSphere上成功實現了此解決方案?
感謝您的反饋意見。但是,該頁面上的示例使用'com.ibm.websphere.webservices.Constants.REQUEST_TRANSPORT_PROPERTIES'中的IBM值。我想避免這種情況,並儘可能使用'MessageContext.HTTP_REQUEST_HEADERS'。 –