volley
并使用下载图像
BufferedInputStream
android:usesCleartextTraffic="true"
我从截击中得到这个错误:
com.android.volley.ParseError: org.json.JSONException: Unterminated object at character 20 of {"data":{"foo":"bar"
我使用
缓冲输入流
这样地:
private boolean getFileFromUrl(String url, String path) {
try (BufferedInputStream in = new BufferedInputStream(new URL(url).openStream());
FileOutputStream fileOutputStream = new FileOutputStream(path)) {
byte dataBuffer[] = new byte[1024];
int bytesRead;
while ((bytesRead = in.read(dataBuffer, 0, 1024)) != -1) {
fileOutputStream.write(dataBuffer, 0, bytesRead);
}
fileOutputStream.close();
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
Content-Length
参数,有时会出现以下错误:
W/System.err: java.net.ProtocolException: unexpected end of stream
at com.android.okhttp.internal.http.Http1xStream$FixedLengthSource.read(Http1xStream.java:398)
at com.android.okhttp.okio.RealBufferedSource$1.read(RealBufferedSource.java:372)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:248)
W/System.err: at java.io.BufferedInputStream.read1(BufferedInputStream.java:288)
W/System.err: at java.io.BufferedInputStream.read(BufferedInputStream.java:347)
如果我没有
参数,某些文件仍未完全加载。不
IOException
引发,但如果我尝试读取一些图像,则会出现以下错误:
<Corrupt JPEG data: premature end of data segment> from output_message
这些错误是随机发生的。如果我用我的浏览器打开这些网址,它可以完美地加载它们。我不知道如何调试它。
getFileFromUrl
用一个
https
网址,然后一切正常。不幸的是,我不能在这个项目中使用https,只有http。
从URL获取文件
拜访
Runnable
Executors.newFixedThreadPool(1);