如果服务器返回502错误,如何读取HTTP响应?

时间:2013-06-27 20:14:34

标签: java http post request response

我使用URLConnection向服务器发送POST请求,我使用以下代码来读取响应:

String line;
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));   
while ((line = reader.readLine()) != null) {
    response += line;
}
reader.close();

但是,服务器有时会在响应中返回502错误并显示有意义的错误消息,我想获取该消息。我的问题是,在这种情况下尝试创建BufferedReader会产生java.io.IOException

Server returned HTTP response code: 502 for URL: <url>

如何绕过这个?

1 个答案:

答案 0 :(得分:3)

沿着这些行修改代码,以便您可以获取errorstream而不是抛出IOException

HttpURLConnection httpConn = (HttpURLConnection)connection;
InputStream is;
if (httpConn.getResponseCode() >= 400) {
    is = httpConn.getErrorStream();
} else {
    is = httpConn.getInputStream();
}

BufferedReader reader = new BufferedReader(new  InputStreamReader(is));   
while ((line = reader.readLine()) != null) {
     response += line;
}
reader.close();