【发布时间】:2013-11-21 14:45:29
【问题描述】:
当我向服务器发送请求时
...
Response response = builder.method(req.getMethod(), Entity.entity(req, req.getMediaType())); // req.getMediaType() return MediaType.APPLICATION_XML
if(response.getStatus() != 200)
throw new CoreErrorException("core resulted error with status = " + response.getStatus());
T resp = response.readEntity(respType);
...
Jersey 在最后一行抛出异常:
org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyReader not found for media type=application/octet-stream
我做了一些调查。首先,我得到了回应:
Content-Length: 93
Date: Thu, 21 Nov 2013 12:53:46 GMT
Server: APP
<root>
<returncode>XXX</returncode>
<desc>some description</desc>
</root>
标头不包含任何有关 MediaType 的信息。
确实,当我尝试调用 response.getMediaType() 时,它返回 null。
我认为,这就是问题所在。 Jersey 无法检测响应的 MediaType 并默认设置它(“application/octet-stream”)。但实际上我的响应主体是 XML。有什么方法可以告诉泽西岛吗?
【问题讨论】:
标签: java rest http-headers jersey jax-rs