我正在使用 Jersey (v 1.17.1) 客户端与不受我控制的远程服务器通信(因此我看不到传入的请求)。
我喜欢使用 JSON 数据发出 POST 请求,其结构类似于此示例:
{"customer":"Someone",
"date":"2013-09-12",
"items":[{
"sequenceNo":1,
"name":"foo",
"quantity":2,
"price":42,
"tax":{"percent":7,"name":"vat 7%"}
},
{
"sequenceNo":2,
"name":"bar",
"quantity":5,
"price":23,
"tax":{"percent":7,"name":"vat 7%"}
}
]
}
那是我的代码:
final Client c = Client.create();
final WebResource service = c.resource(SERVER);
final Form form = new Form();
form.add("customer", "Someone");
form.add("date", "2013-09-12");
form.add("items", XXX); // how do I do that?
final ClientResponse response = service.path("aPath").queryParam("param", "value").cookie(new Cookie("token", token))
.type(MediaType.APPLICATION_JSON)
.post(ClientResponse.class, form);
final String raw = response.getEntity(String.class);
System.out.println("Response " + raw);
我尝试了几种方法(比如嵌套另一个 Form 对象),但我总是得到相同的结果:服务器返回 400 - 错误请求(“客户端发送的请求在语法上不正确(错误请求)。”)我认为是因为强制参数项未正确发送。
有人知道我如何像描述的那样嵌套 JSON 数据吗?我认为这是一种常见的情况,但我在网上没有找到任何例子。