How to get HttpClient returning status code and response body?

后端 未结 5 2094
谎友^
谎友^ 2020-11-29 08:03

I am trying to get Apache HttpClient to fire an HTTP request, and then display the HTTP response code (200, 404, 500, etc.) as well as the HTTP response body (text string).

5条回答
  •  忘掉有多难
    2020-11-29 08:24

    Don't provide the handler to execute.

    Get the HttpResponse object, use the handler to get the body and get the status code from it directly

    try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
        final HttpGet httpGet = new HttpGet(GET_URL);
    
        try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
            StatusLine statusLine = response.getStatusLine();
            System.out.println(statusLine.getStatusCode() + " " + statusLine.getReasonPhrase());
            String responseBody = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
            System.out.println("Response body: " + responseBody);
        }
    }
    

    For quick single calls, the fluent API is useful:

    Response response = Request.Get(uri)
            .connectTimeout(MILLIS_ONE_SECOND)
            .socketTimeout(MILLIS_ONE_SECOND)
            .execute();
    HttpResponse httpResponse = response.returnResponse();
    StatusLine statusLine = httpResponse.getStatusLine();
    

    For older versions of java or httpcomponents, the code might look different.

提交回复
热议问题