Joe*_*e D 5 content-type jax-ws jakarta-ee
在我们的应用程序中,我们有以下代码行向服务发出 SOAP 请求
@WebResult(
name = "GetRequestResponse",
targetNamespace = "urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1",
partName = "parameters"
)
GetRequestResponse getRequest(@WebParam(name = "GetRequestRequest",targetNamespace = "urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1",partName = "parameters") GetRequestRequest var1) throws InvalidContentException, SMEVFailureException, SenderIsNotRegisteredException, SignatureVerificationFaultException, UnknownMessageTypeException;
Run Code Online (Sandbox Code Playgroud)
它曾经一直有效,直到服务将其响应内容类型从 更改text/xml为text/plain
它仍然返回有效的 XML,但只是在text/plain
我不想大幅修改代码,因为它是一个非常古老且过时的遗留库,专门用于向服务发出请求(另外,我不确定是否有可以替代它的东西)
总而言之,我们得到以下异常:
ru.voskhod.smev.message_exchange_service_client.WebServiceClientException: com.sun.xml.internal.ws.server.UnsupportedMediaException: Unsupported Content-Type: text/plain;charset=utf-8 Supported ones are: [text/xml]
at ru.voskhod.smev.message_exchange_service_client.MessageExchangeEndpoint.getRequest(MessageExchangeEndpoint.java:457)
Run Code Online (Sandbox Code Playgroud)
有没有办法让它接受text/plain并以同样的方式对待它text/xml?
您可以使用中间反向代理(例如客户端运行的本地),在响应标头上覆盖, 然后与该代理通信,而不是与服务器通信。text/xmltext/plainContent-Type
例如,您可以将httpd与ProxyPass/ProxyPassReverse指令(来自mod_proxy模块)结合使用Header set Content-Type "text/plain"(来自mod_headers模块)。
如果客户端无法配置为调用新域(例如localhost),您可能需要添加一个hosts文件条目以将远程服务器的域解析为反向代理的绑定地址。但反向代理仍然需要能够 dns 解析远程服务器的原始地址,因此要使其工作,至少两者之一(客户端或反向代理)可能需要容器化。
| 归档时间: |
|
| 查看次数: |
1267 次 |
| 最近记录: |