可以使用httpConnection.connect()停止连接到URL的线程吗?

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连接线程执行此工作的信息.

谢谢

Alf*_*rio 0

您只需要调用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()。