当前位置: 首页 > 知识库问答 >
问题:

获取从服务器发送的有用数据在InputStream返回的getErrorStream在HttpURLConnection

夏侯朝斑
2023-03-14

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

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

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

是否有任何方法可以从getErrorStream()返回的InputStream获取响应消息(如果返回的值不为null并且返回了有效的响应)?

共有1个答案

宿文栋
2023-03-14

您可以将此字节流包装为字符流,然后读取错误信息。

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

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

 类似资料:
  • 本文向大家介绍node.js+Ajax实现获取HTTP服务器返回数据,包括了node.js+Ajax实现获取HTTP服务器返回数据的使用技巧和注意事项,需要的朋友参考一下 我们看一个HTML5页面中通过AJAX请求的方式获取HTTP服务器返回数据的代码示例.由于我们把服务器的端口指定为1337,并将从端口为80的网站中运行HTML5页面,因此这是一种跨域操作,需要在HTTP响应头部中添加Acces

  • 问题内容: 我有一个角度服务,可以返回从服务器获取的数据的承诺。在固定的时间间隔内多次请求此数据,以使显示保持最新。有时响应速度可能很慢(最多10秒),如果两个请求重叠并且第一个请求最后响应,我将获取应用程序中显示的过期信息。时间线如下所示: 目前,我为请求保留一个计数器,使.then函数关闭该请求,如果该数据太旧,则将其丢弃。我想知道那里的一个Promise库是否已经做到了,或者是否有一种标准的

  • 我一直在做这个项目,其中一个部分包括从Raspberry向我的服务器发送一些数据。但它不能正常工作,我不知道为什么。我试图通过删除“urllib2”并使用“request”来修复错误。但徒劳的是,一切都没有改变。如果有人能帮助我,我会非常感激的。谢谢! PHP代码: python代码:

  • 我正在尝试从Android向我的php服务器提交数据。然而,所有的答案似乎都使用了不推荐使用的ApacheHTTP库。我不想用它,当我试着用的时候,它不起作用。 现在它似乎什么也没做。它似乎连接到web服务器,但服务器不写入任何数据。如果我只是用浏览器访问url,它会写入一个文件。 php代码是 然后在Android studio中,我会在按下按钮后放入所有代码

  • 问题内容: 假设我们尝试与发送回XML数据的服务器(XMPP)通信。我们可以用 但是存在一个问题,即服务器不发送\ 10(换行符)符号。我也尝试了12次,但是没有任何运气。readLine函数也是如此,因为它也依赖\ 10。那么,如何读取服务器发送的数据?我尝试使用“>”作为分隔符,并成功仅接收了部分消息(可预测)。我有一个在错误为nil时循环并使用’>’分隔符的想法,但它也没有用。我的研究表明,

  • 我正在调用一个函数,其中有一个订户函数。此函数必须返回一个数组,但它给出了一个错误: 缺少订阅。 如何做到这一点?