加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 无法在android中使用httpconnection连接

发布时间:2020-12-15 02:35:18 所属栏目:Java 来源:网络整理
导读:我正在使用 android 2.3.3,我已经制作了一个工作得很好的rss阅读器,然后我将那个简单的rss阅读器的代码集成到另一个活动中,只需复制粘贴它,没有错误. 问题是当我在我的模拟器上运行应用程序时,它给出了连接异常的错误.然后我通过在try block中的每行之后放置
我正在使用 android 2.3.3,我已经制作了一个工作得很好的rss阅读器,然后我将那个简单的rss阅读器的代码集成到另一个活动中,只需复制粘贴它,没有错误.

问题是当我在我的模拟器上运行应用程序时,它给出了连接异常的错误.然后我通过在try block中的每行之后放置toast来解决问题是在httpconnection.connect();线.

我在android清单中添加了权限,而我的logcat发出了javaio异常的警告:连接错误.

try {
        HttpURLConnection httpURLConnection = (HttpURLConnection) connection;
        //Toast.makeText(this,"urlconnection passed",Toast.LENGTH_SHORT).show();
        httpURLConnection.setAllowUserInteraction(false);
        httpURLConnection.setInstanceFollowRedirects(true);
        //Toast.makeText(this,"setting response method",Toast.LENGTH_SHORT).show();
        httpURLConnection.setRequestMethod("GET");
        //Toast.makeText(this,"connecting",Toast.LENGTH_SHORT).show();
        httpURLConnection.connect();
        Toast.makeText(this,"on response code",Toast.LENGTH_SHORT).show();
        response = httpURLConnection.getResponseCode();
        //Toast.makeText(this,"response code passed",Toast.LENGTH_SHORT).show();
        if (response == HttpURLConnection.HTTP_OK) {
            //Toast.makeText(this,"OK",Toast.LENGTH_SHORT).show();
            inputStream = httpURLConnection.getInputStream();
        }

    } catch (Exception e) {
        // TODO: handle exception
        throw new IOException("Error connecting");
    }

这里创建对象的代码:

URL url = new URL(UrlString);
URLConnection connection = url.openConnection();
if (!(connection instanceof HttpURLConnection)) 
  throw new IOException("Not a HTTP connection");

解决方法

It gives networkonmainthread exception

这意味着您正在主线程上执行网络操作,并且在严格模式下不允许这样做.

“在主线程中”通常意味着您在事件处理程序中执行此操作,如onResume,onPause或OnClickListener的onClick方法.您可以查看这篇文章(Painless threading)以了解问题是什么以及为什么不允许这样做.通常,如果您在主线程中执行网络操作,它将阻止GUI事件的处理,如果网络操作很慢,您的应用程序将无法响应.

Strict Mode出现在API级别9中,因此这解释了为什么如果min SDK版本为10,以及为什么它与min SDK版本8一起使用时会出现问题.

您应该使用AsyncTask或其他方法在后台执行此操作.您可以参考1.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读