我有这段代码
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
client.addFilter(new HTTPBasicAuthFilter(adminUser, adminPass));
client.addFilter(new LoggingFilter(System.out));
WebResource service = client.resource(baseURL);
ClientResponse clientResponse = service.path("api")
.path("v1")
.path("shoppers")
.path(orderId)
.path("status.json").accept(MediaType.APPLICATION_JSON).post(ClientResponse.class, request);
每当我尝试发布JSON请求时,我都会收到HTTP 415
错误响应。对这个问题进行了一点挖掘,发现JERSEY没有正确地编组我的对象。通过添加LoggingFilter
,我可以看到在请求正文中,JAXBObject
已被XML
而不是JSON
。
这是JERSEY的已知行为吗?我该怎么办?
答案 0 :(得分:1)
你可能需要在你的请求上调用type()
来设置内容类型(我认为泽西岛做了一些聪明的事情):
.path("status.json")
.type(MediaType.APPLICATION_JSON) // <-- This line
.accept(MediaType.APPLICATION_JSON)
.post(ClientResponse.class, request);
Other resources表示您可能需要使用ObjectMapper
手动执行此操作:
ObjectMapper mapper = new ObjectMapper();
String jsonStr = mapper.writeValueAsString(jsonObj);