我正在使用DropWizard和jersey来创建一个从服务器接受JSON并将其映射到POJO的客户端.但是,我在调用客户端时收到此错误.
java.lang.IllegalArgumentException: Error parsing media type 'application/json;encoding=utf8, charset=utf-8'
我的代码如下:
@Path("/something")
@Produces(MediaType.APPLICATION_JSON)
public class SampleClient {
final Client client;
WebResource.Builder builder;
public SampleClient (Client client) {
this.client = client;
this.builder = client.resource("http://localhost/mysample/service").type("application/json");
}
@GET
public MyMapper getSomething() {
MyMapper result = builder.accept("application/json").get(MyMapper.class);
return result;
}
}
我究竟做错了什么?
解决方法:
您是否在客户端生成该标头?
根据W3C – 4 The Content-Type Header Field,Content-type标头必须具有以下格式:
Content-Type := type "/" subtype *[";" parameter]
哪里
parameter := attribute "=" value
所以你可以拥有一个可解析的媒体类型:
Content-type: application/json; encoding=utf8; charset=utf8
使用分号而不是逗号.这并不意味着它是正确的,只是可解析的.请尝试使用:
Content-type: application/json; charset=utf8
如果这是客户端错误,那么您可能需要配置Accept标头(并且由于您没有发送任何有效负载,因此不需要Content-type).在没有指定字符集的情况下尝试它(如果失败,它将因其他原因而失败).您可以使用交互式REST客户端(例如Firefox REST client)测试不同的标头和编码