无法连接Android中使用的HttpConnection(Cannot connect using

2019-06-25 23:00发布

我使用的Android 2.3.3,我做了这是伟大的工作的RSS阅读器,那么我综合简单的RSS阅读器的代码到另一个活动,只需复制有细心粘贴的,没有错误。

问题是,当我在我的模拟器运行应用程序它给了我错误的连接异常。 然后我想出通过把吐司在try块,这个问题是在everyline后httpconnection.connect(); 线。

而我的logcat给出警告我已经加入Android清单许可javaio exception:error connecting

    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"); 

Answer 1:

它给networkonmainthread例外

这意味着你在主线程上做网络业务,而这不是在严格模式允许的。

“在主线程”通常意味着你正在做它在事件处理程序,像onResumeonPause ,或在onClick你的OnClickListener的方法。 你可以看看这个帖子( 无痛线程 ),以了解什么问题,为什么这是不允许的。 一般来说,如果你在主线程中执行网络操作,它会阻止GUI事件的处理过程,如果网络运行缓慢,您的应用程序不响应。

严格模式出现在API 9级,所以这解释了为什么你有问题,如果分SDK版本是10,为什么用最小的SDK版本8的工作。

您应该使用的AsyncTask或其他方法做它在后台运行。 您可以参考1本。



文章来源: Cannot connect using httpconnection in android