POST JSON并检索JSON响应,即使是40X错误也是如此

时间:2016-01-28 20:54:12

标签: java json httprequest

我一直在努力完成标题所说的几个小时,但没有任何作用。一直在尝试各种不同的HTTP客户端与各种不同的错误。相关问题:

getErrorStream: stream closed, getInputStream: works

https://stackoverflow.com/questions/35065591/apache-http-client-get-body-on-error

不幸的是,这两个问题都没有答案。有人能给我一个有效的解决方案吗?我知道Stackoverlflow不是"要求代码"平台,但很明显,我尝试自己解决它。

我只是想将JSON数据提交到服务器并获得响应(也是JSON),即使是40X错误(因为服务器仍然返回JSON数据)。

1 个答案:

答案 0 :(得分:2)

泽西岛客户端将是我的回答

https://jersey.java.net/documentation/latest/client.html

示例:

ClientConfig clientConfig = new ClientConfig();     
Client client = ClientBuilder.newClient(clientConfig);

WebTarget webTarget = client.target("http://example.com/rest");
WebTarget resourceWebTarget = webTarget.path("resource");
WebTarget helloworldWebTarget = resourceWebTarget.path("helloworld");
WebTarget helloworldWebTargetWithQueryParam =
        helloworldWebTarget.queryParam("greeting", "Hi World!");

Invocation.Builder invocationBuilder =
        helloworldWebTargetWithQueryParam.request(MediaType.APPLICATION_JSON_TYPE);
invocationBuilder.header("some-header", "true");

Response response = invocationBuilder.post(Entity.entity("{'my':'json'}", MediaType.APPLICATION_JSON_TYPE));
System.out.println(response.getStatus());
System.out.println(response.readEntity(String.class));

无论回复状态response.getStatus()如何,您都可以获得回复的正文response.readEntity(String.class)