我想发出一个HTTP POST
请求,要求参数必须作为原始JSON文本传递,但我不知道如何使用Jersey客户端。
这是API规范(在Postman Rest Client中运行良好):(请查看我的邮递员的屏幕截图,URL,主体中的参数,以及2个标题是Content-Type:application / json& Accept:application / json)
以下是我在泽西岛尝试的内容:
JsonObject parameters = new JsonObject();
parameters.addProperty("centerId", centerId);
parameters.addProperty("studentId", studentId);
if (fromDate != null) {
parameters.addProperty("fromDate", fromDate);
}
if (toDate != null) {
parameters.addProperty("toDate", toDate);
}
Object response = client.target("http://localhost:8080/rest").path("student/calendar")
.request(MediaType.APPLICATION_JSON).post(Entity.json(parameters), String.class);
但没有任何效果。在这种情况下,任何人都可以建议什么是正确的方式来处理泽西岛?谢谢。
答案 0 :(得分:0)
使用InputStream
进行实体构建,它应该可以工作
String payload = "{\"schoolId\":1,\"studentId\":1,\"fromDate\":\"1454259600000\",\"toDate\":\"1456765200000\"}";
client.target("<targetURI>")
.request(MediaType.APPLICATION_JSON)
.post(Entity.entity(
new ByteArrayInputStream(payload.getBytes()),
MediaType.APPLICATION_JSON
));
但是最后,Entity.json(payload)
也应该起作用。