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

Đin*_*hâu 5 java json jersey http-post

我想发出一个HTTP POST请求,它要求参数必须作为原始 JSON 文本传递,但我不知道如何使用 Jersey 客户端。
这是 API 规范(在 Postman Rest Client 中运行良好):(请看我的 Postman 的屏幕截图,URL、正文中的参数和 2 个标题是 Content-Type:application/json 和 Accept:application/json) 邮差客户端
这是我在 Jersey 中尝试过的:

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);
Run Code Online (Sandbox Code Playgroud)

但没有任何效果。谁能建议在这种情况下处理泽西岛的正确方法是什么?谢谢你。

ToY*_*nos -1

使用 anInputStream进行实体构建,它应该可以工作

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
));
Run Code Online (Sandbox Code Playgroud)

但最终,Entity.json(payload)应该还可以。