当我在HttpURLConnection中调用getInputStream()方法时,它返回一个HTTP异常,并使用此策略来捕获该异常。
try {
con.getInputStream();
} catch (IOException e) {
resStream = con.getErrorStream();
}
但是,我需要获取服务器发送给resStream的有用数据,因为JavaDoc如下所示。 “如果连接失败但服务器仍然发送了有用的数据,则返回错误流。”
有没有办法从getErrorStream()返回的InputStream中获取响应消息(如果返回的值不为null且返回了有效的响应)?
答案 0 :(得分:1)
您可以将此字节流包装到字符流中,然后只读取错误信息。
InputStreamReader isr = new InputStreamReader(resStream);
BufferedReader br = new BufferedReader(isr);
StringBuffer buf = new StringBuffer();
String line = null;
while((line = buf.readLine()) != null) {
buf.append(line);
}
//assume you have a log object, you'd better not use System.out.println()
log.error(buf.toString());
//do not forget to close all the stream
然后,您可以从服务器端获取堆栈跟踪。我希望这会有所帮助。