如何在Jersey客户端HTTP POST请求中发布原始json文本?

时间:2016-03-20 15:37:25

标签: java json jersey http-post

我想发出一个HTTP POST请求,要求参数必须作为原始JSON文本传递,但我不知道如何使用Jersey客户端。
这是API规范(在Postman Rest Client中运行良好):(请查看我的邮递员的屏幕截图,URL,主体中的参数,以及2个标题是Content-Type:application / json& Accept:application / json) Postman client
以下是我在泽西岛尝试的内容:

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);

但没有任何效果。在这种情况下,任何人都可以建议什么是正确的方式来处理泽西岛?谢谢。

1 个答案:

答案 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)也应该起作用。