java使用BufferedInputStream获取数据
我试图通过http监控apache服务器。我使用的代码如下所示
byte[] buffer = new byte[8192];
byte[] outputBuffer = new byte[8192];
int bytesRead = 0;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
BufferedInputStream bis = new BufferedInputStream(sourceUrl.openStream());
while (true) {
bytesRead = bis.read(buffer);
if (bytesRead == -1)
break;
baos.write(buffer, 0, bytesRead);
}
bis.close();
outputBuffer = baos.toByteArray();
baos.close();
return outputBuffer;
}catch{}
我希望这些值作为名称-值对。但有些时候,我得到如下所示
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=LoginAction.action">
</head>
<body>
<p>Loading ...</p>
</body>
</html>
为什么会这样。我应该在代码中做些什么来获得正确的值?请帮忙
# 1 楼答案
行
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=LoginAction.action">
表示用户代理(又名浏览器)应通过加载相对URLLoginAction.action
来刷新页面。因此,问题在于服务器/会话状态,而不是从流中读取的代码顺便说一句,你对
BufferedInputStream
的使用已经完全过时了。您可以直接从InputStream
返回的URL.openStream()
中读取而且,
byte[] outputBuffer = new byte[8192];
是无稽之谈。当您用baos.toByteArray()
的结果覆盖这个变量的值时,您永远不会使用在这里创建的数组。仅仅声明变量byte[] outputBuffer;
就足够了