我最近一直在尝试使用 JAX-WS 来使用 .net WCF 休息服务。由于服务的安全性,我必须设置一个带有一些签名的自定义 HTTP 标头授权。我已经通过执行以下操作解决了这个问题:
BindingProvider bp = (BindingProvider) port;
bp.getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS,
Collections.singletonMap("Authorization",Collections.singletonList(authHeader)));
但是,调用服务时出现异常:
com.sun.xml.internal.ws.server.UnsupportedMediaException: Unsupported Content-Type: text/html; charset=UTF-8 Supported ones are: [text/xml]
com.sun.xml.internal.ws.encoding.StreamSOAPCodec.decode(StreamSOAPCodec.java:284)
com.sun.xml.internal.ws.encoding.StreamSOAPCodec.decode(StreamSOAPCodec.java:118)
com.sun.xml.internal.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:278)
com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:180)
com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:83)
com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:105)
在我看来,我在服务中的请求可能需要为 text/xml 内容类型。我该如何设置?我用谷歌搜索了很多,并阅读了一些文档,但我似乎无法弄清楚。例外当然也可能是 Content-Type 设置以外的其他东西(因为我已经读过默认情况下 jax-ws 使用 text/xml),但我不确定。
提前致谢!