SOAP 不支持的媒体异常 text/plain 支持的是:[text/xml]
SOAP unsupported media exception text/plain Supported ones are: [text/xml]
在我们的应用程序中,我们有以下代码行向服务发出 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;
在服务将其响应内容类型从 text/xml
更改为 text/plain
之前,它一直有效
它仍然 returns 有效 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)
有没有办法让它接受 text/plain
并像 text/xml
一样对待它?
您可以使用中间反向代理(例如,客户端运行的本地)用[=]覆盖 text/xml
11=] 在 Content-Type
响应 header 上,然后与该代理对话而不是与服务器对话。
例如你可以使用 httpd with with ProxyPass
/ProxyPassReverse
directives (from mod_proxy 模块)
结合 Header set Content-Type "text/plain"
(来自 mod_headers 模块)。
如果客户端无法配置为调用新域(例如 localhost),您可能需要添加一个 hosts
文件条目以将远程服务器的域解析为反向代理的绑定地址。但是反向代理仍然需要能够 dns-resolve 远程服务器的原始地址,因此要使其工作至少两者之一(客户端或反向代理)可能需要 containerized.
更改调用 http 请求 header。 'content-type' header 应该是 'text/xml'.
在我们的应用程序中,我们有以下代码行向服务发出 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;
在服务将其响应内容类型从 text/xml
更改为 text/plain
它仍然 returns 有效 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)
有没有办法让它接受 text/plain
并像 text/xml
一样对待它?
您可以使用中间反向代理(例如,客户端运行的本地)用[=]覆盖 text/xml
11=] 在 Content-Type
响应 header 上,然后与该代理对话而不是与服务器对话。
例如你可以使用 httpd with with ProxyPass
/ProxyPassReverse
directives (from mod_proxy 模块)
结合 Header set Content-Type "text/plain"
(来自 mod_headers 模块)。
如果客户端无法配置为调用新域(例如 localhost),您可能需要添加一个 hosts
文件条目以将远程服务器的域解析为反向代理的绑定地址。但是反向代理仍然需要能够 dns-resolve 远程服务器的原始地址,因此要使其工作至少两者之一(客户端或反向代理)可能需要 containerized.
更改调用 http 请求 header。 'content-type' header 应该是 'text/xml'.