Pab*_*s84 7 java multithreading android urlconnection httpconnection
我有一个连接到URL的线程来获取一些数据.
有时候这个方法花了httpConnection.connect();太多的时间来获得响应,我想将这个连接线程的加载对话框限制为5 seg.
我尝试在代码中添加超时,但它不起作用 !!
URL formattedUrl = new URL(url);
URLConnection connection = formattedUrl.openConnection();
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
HttpURLConnection httpConnection = (HttpURLConnection) connection;
httpConnection.setAllowUserInteraction(false);
httpConnection.setInstanceFollowRedirects(true);
httpConnection.setRequestMethod("GET");
httpConnection.setConnectTimeout(5000);
httpConnection.setReadTimeout(5000);
httpConnection.connect();
Run Code Online (Sandbox Code Playgroud)
因此,我必须在5000秒过后或者当用户按下手机上的后退键时停止连接方法和线程.
怎么能实现这一目标?我找不到有关在Android中使用url连接线程执行此工作的信息.
谢谢
您只需要调用URLConnection.setConnectTimeout(millis)即可实现您的要求。如果指定的超时到期,则会引发SocketTimeoutException 。
try {
HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
con.setConnectTimeout(5000); //set timeout to 5 seconds
} catch (java.net.SocketTimeoutException e) {
//DO SOMETHING
} catch (java.io.IOException e) {
//DO SOMETHING
}
Run Code Online (Sandbox Code Playgroud)
值得注意的是,它说了以下内容:
此方法的某些非标准实现可能会忽略指定的超时。要查看连接超时设置,请调用 getConnectTimeout()。
| 归档时间: |
|
| 查看次数: |
4234 次 |
| 最近记录: |