简体   繁体   中英

REST API Client response in java encoding trouble

I have a problem with an API call response in java.

See below the API response of my request, server replies with content that is unreadable as text:

响应截图

Here is my code:

    String urlt = "xxxxxx";
    URL url = new URL(urlt);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("GET");
    conn.setRequestProperty("Connection", "Keep-Alive");
    conn.addRequestProperty("Accept-Encoding", "gzip");
    conn.addRequestProperty("User-Agent", "okhttp/3.4.1");

    if (conn.getResponseCode() != 200) {
        throw new RuntimeException("Failed : HTTP error code : "
                + conn.getResponseCode());
    }

    BufferedReader br = new BufferedReader(new InputStreamReader(
        (conn.getInputStream())));

    String output;
    System.out.println("Output from Server .... \n");
    while ((output = br.readLine()) != null) {
        System.out.println(output);
    }

    conn.disconnect();

and an example of response headers:

响应头示例

With the following line, you tell the server that you are ready to accept a compressed response:

conn.addRequestProperty("Accept-Encoding", "gzip");

As shown in picture of response headers, the server obliges and gives you gzip-encoded (compressed) content.

But then you proceed to read the response, assuming it's just text... so yeah it prints as garbage in your console.

Either you remove that header above, or be ready to uncompress gzipped content.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM