0

当我在 HttpURLConnection 中调用 getInputStream() 方法时,它返回一个 HTTP 异常,我使用此策略来捕获该异常。

try {
   con.getInputStream();
} catch (IOException e) {
   resStream = con.getErrorStream();
}

但是,我需要获取服务器发送到 resStream 的有用数据,JavaDoc 声明如下。“如果连接失败但服务器仍然发送了有用的数据,则返回错误流。”

有什么方法可以从getErrorStream()返回的InputStream中获取响应消息(如果返回值不为null且返回有效响应)?

4

1 回答 1

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

然后,您可以从服务器端获取堆栈跟踪。我希望这将有所帮助。

于 2013-03-29T08:10:25.727 回答