我面临与问题有关的Http连接。 我的代码:Http URL连接无法完全读取
URL url = null;
try {
url = new URL(_url);
} catch (MalformedURLException e) {
}
if (url != null) {
HttpURLConnection urlConn = null;
InputStreamReader isr = null;
try {
urlConn = (HttpURLConnection)url.openConnection();
urlConn.setRequestMethod("GET");
urlConn.setConnectTimeout(45000);
if(response == HttpURLConnection.HTTP_OK) {
StringBuffer readData = new StringBuffer("");
int size = 1024;
char[] buffer = new char[size];
int len;
isr = new InputStreamReader(urlConn.getInputStream());
while ((len = isr.read(buffer, 0, size)) > 0) {
readData.append(buffer, 0, len);
}
}
}
catch(Exception e) {
}
finally {
if(urlConn != null) {
try {
urlConn.disconnect();
} catch(Exception e) {
}
}
if(isr != null) {
try {
isr.close();
} catch(Exception e) {
}
}
}
此代码无法完全下载数据。 例如: 总大小为:13901个字节 上面的代码可以读取大小:12937个字节
这里有什么问题?
请咨询家伙。
你怎么知道它是13901字节?这是在HTTP内容长度标题中还是在查看您在磁盘上提供的文件? – Paolo 2009-12-21 08:50:31
文档说明,当您到达流的末尾时返回-1,而不是0.即使有这种修复,我也认为Ramp的回复可能是您遇到问题的原因。 http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStreamReader.html#read%28char[],%20int,%20int%29 – rui 2009-12-21 09:53:39
那么,InputStream是不允许的如果至少需要1个字节,则返回0,因此检查'if(count> 0)'实际上是否正确。 – StaxMan 2010-10-19 16:24:41