【发布时间】:2023-03-22 17:15:01
【问题描述】:
我收到来自外部服务器的 HTTP 响应,其中包含 XML 的正文。
但是,响应标头显示Content-Type:plain/text
这是不正确的,应该是application/xml。但是,正如我所说,它是一个我们无法更改的外部服务器。
以下代码报错:
ClientResponse response = Client.create().resource(url).get(ClientResponse.class);
return response.getEntity(XmlResponse.class);
例外:
com.sun.jersey.api.client.ClientHandlerException:消息体 Java 类 com.evs.ats.XmlResponse 和 Java 类型类的阅读器 com.evs.ats.XmlResponse,未找到 MIME 媒体类型 text/plain
以下代码有效,但我不喜欢它:
String resultString = response.getEntity(String.class);
InputStream stream = new ByteArrayInputStream(
resultString.getBytes(StandardCharsets.UTF_8)
);
JAXBContext jc = JAXBContext.newInstance(XmlResponse.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
return (XmlResponse) unmarshaller.unmarshal(stream);
有什么方法可以“强制”泽西岛将其读作XML 吗?还是我唯一的选择是使用JAXB(如上)手动解组它?还是有其他选择?
【问题讨论】:
-
哪个版本的球衣?
-
<groupId>com.sun.jersey</groupId> <artifactId>jersey-client</artifactId> <version>1.8</version>
标签: java xml jaxb jersey mime-types