【问题标题】:POST JSON and retrieve JSON response, even on 40X errorsPOST JSON 并检索 JSON 响应,即使出现 40X 错误
【发布时间】:2016-01-28 20:54:12
【问题描述】:

我已经尝试完成标题所说的几个小时了,但没有任何效果。一直在尝试各种不同的 HTTP 客户端,并出现各种不同的错误。相关问题:

getErrorStream: stream closed, getInputStream: works

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

很遗憾,这两个问题都没有答案。有没有人可以真正给我一个可行的解决方案?我知道 Stackoverlflow 不是一个“要求代码”的平台,但很明显我尝试自己解决它。

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

【问题讨论】:

    标签: java json httprequest


    【解决方案1】:

    Jersey Client 将是我的答案

    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)的正文

    【讨论】:

    • 谢谢,但我已经尝试了 3 个不同的以及 Java HTTLUrlConnection 并且一切都有不同的问题。请更具体地说明为什么你认为这会起作用,除了我真的很感激一个例子,我很累但需要尽快完成:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 2017-12-03
    • 2023-01-26
    • 1970-01-01
    相关资源
    最近更新 更多