Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 如何断开HTC(Froyo及以下)手机上的HttpUrlConnection?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

在某些情况下,我需要从客户端断开长轮询http请求.我对服务器的httpUrlConnection的相关部分如下(以下所有代码都在Thread的run()方法中):

try {
    URL url = new URL(requestuRL);

    connection = (httpURLConnection) url.openConnection();
    connection.setrequestProperty("Accept-Charset","UTF-8");
    connection.setConnectTimeout(5 * 1000);
    connection.setReadTimeout(60 * 1000);
    connection.setrequestMethod("GET");

    // read the output from the server
    reader = new BufferedReader(new InputStreamReader(connection.geTinputStream()));
    StringBuilder StringBuilder = new StringBuilder();

    String line = null;
    while ((line = reader.readLine()) != null) {
        StringBuilder.append(line + "\n");
    }
    Log.d(tag,StringBuilder);
} catch (IOException ioE) {
    Log.e(tag,ioE);
} finally {
    if (reader != null) {
        try {
            reader.close();
        } catch (IOException ioE) {
            ioe.printStackTrace();
        }
    }
}

这是我第一次启动,然后(在第二次延迟后)尝试取消请求:

pollThread = new PollThread();
pollThread.start();
Log.d(tag,"pollThread started");

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        pollThread.cancelrequest();
        Log.d(tag,"pollThread presumably cancelled");
    }
},1000);

这就是cancelrequest()方法的样子:

public void cancelrequest() {
    if (connection != null) {
        connection.disconnect();
    }
}

基本上,

>我使用get请求启动httpUrlConnection,读取超时为1分钟
>然后一秒钟后,我尝试取消之前的请求
>预期的结果是,当我调用connection.disconnect()时,连接应抛出IOException

这正是各种仿真器(2.2 – 4.0.3),摩托罗拉Atrix(2.3.7)和三星Note(4.0.1)上发生的情况.但是在一些运行2.2的HTC设备上,尽管我明确终止了连接,但请求仍将保持活动并且它将收到响应.我用HTC Desire和HTC Wildfire验证了这一点.

这里发生了什么?如何在运行2.2的所有设备上安全取消此类请求?

为方便起见,如果您想自己试驾,可以在这里找到整个代码https://gist.github.com/3306225

最佳答案
这里发生了什么?

这是早期Android版本(Froyo 2.2)中的已知错误,在排序中,套接字不能被其他线程异步关闭,并且已在Gingerbread 2.3中修复:

Issue 11705: impossible to close HTTP connection using HttpURLConnection

如何在运行2.2的所有设备上安全取消此类请求?

链接中项目成员的评论

希望有所帮助.

大佬总结

以上是大佬教程为你收集整理的android – 如何断开HTC(Froyo及以下)手机上的HttpUrlConnection?全部内容,希望文章能够帮你解决android – 如何断开HTC(Froyo及以下)手机上的HttpUrlConnection?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。