cph*_*il5 5 url android download
我尝试过其他方法从URL下载信息,但需要更快的方法.我需要下载并解析大约250个单独的页面,并希望该应用程序看起来不会显得非常慢.这是我目前用于检索单个页面的代码,任何洞察都会很棒.
try
{
URL myURL = new URL("http://www.google.com");
URLConnection ucon = myURL.openConnection();
InputStream inputStream = ucon.getInputStream();
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
ByteArrayBuffer byteArrayBuffer = new ByteArrayBuffer(50);
int current = 0;
while ((current = bufferedInputStream.read()) != -1) {
byteArrayBuffer.append((byte) current);
}
tempString = new String(byteArrayBuffer.toByteArray());
}
catch (Exception e)
{
Log.i("Error",e.toString());
}
Run Code Online (Sandbox Code Playgroud)
如果请求发送至同一服务器,请尝试保持连接打开。另外,尽量避免缓冲区中的重新分配,并一次性读取尽可能多的内容。
const int APPROX_MAX_PAGE_SIZE = 300;
try
{
URL myURL = new URL("http://www.google.com");
URLConnection ucon = myURL.openConnection();
ucon.setRequestHeader("Connection", "keep-alive") // (1)
InputStream inputStream = ucon.getInputStream();
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
ByteArrayBuffer byteArrayBuffer = new ByteArrayBuffer(APPROX_MAX_PAGE_SIZE); // (2)
int current = 0;
byte[] buf = new byte[APPROX_MAX_PAGE_SIZE];
int read;
do {
read = bufferedInputStream.read(buf, 0, buf.length); // (3)
if(read > 0) byteArrayBuffer.append(buf, 0, read);
} while (read >= 0);
tempString = new String(byteArrayBuffer.toByteArray());
}
catch (Exception e)
{
Log.i("Error",e.toString());
}
免责声明:这是在没有访问 Java 编译器的情况下“盲目”编写的。setRequestHeader 可能仅在 HttpURLConnection 上可用(需要强制转换),或者某些参数错误,但如果是这样,请随时编辑。
| 归档时间: |
|
| 查看次数: |
2591 次 |
| 最近记录: |