当前位置: 首页 > 面试题库 >

无法在Android中使用httpconnection连接

唐繁
2023-03-14
问题内容

我使用的是android
2.3.3,我制作了一个运行良好的rss阅读器,然后将该简单的rss阅读器的代码集成到了另一个活动中,只是仔细地粘贴粘贴,没有错误。

问题是,当我在模拟器上运行应用程序时,它给我错误连接异常。然后,我通过在尝试块中的每一httpconnection.connect();行之后放入吐司来找出问题所在。

我已在android清单中添加了权限,而我的logcat给出了的警告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");

问题答案:

它给出networkonmainthread异常

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

“在主线程中”通常意味着您正在事件处理程序(如onResumeonPause)中或在onClickOnClickListener
的方法中进行此操作。您可以看一下这篇文章(无痛线程),以了解问题所在以及为什么不允许这样做。通常,如果您在主线程中执行网络操作,它将阻止GUI事件的处理;如果网络操作缓慢,则您的应用程序将无响应。

严格模式出现在API级别9中,因此这说明了为什么最小SDK版本为10时为什么会遇到问题,以及为什么最小SDK版本为8时仍然起作用。

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



 类似资料:
  • 我做错了什么?多谢了。

  • 我尝试使用此视频安装jsoup 接着,一堆问题出现了,一个接着一个: 在修复了所有这些之后,我尝试运行我的测试应用程序(这是我的主要活动) 我的Logcat是这个 这是我的建筑.Gradle 应用程序在文档行崩溃。问题是什么?(wifi正在工作)

  • 我在docker容器中运行了mysql: 我想在另一个docker容器中运行我的Spring Boot应用程序(使用Maven): MySQL日志有关于的警告。

  • 我正在使用设计支持库23.2。我已经在我的构建中添加了这些行。gradle作为我的gradle插件是1.5版 正如这里所规定的 但是我不能在imageview中使用srccompt属性。 其中@drawable/wallper是一个矢量资源文件 上面写着 错误:(14)在包“android”中找不到属性“srccomat”的资源标识符 我的Gradle版本是1.5。如何使用srcCompat?

  • 有人能在这个问题上帮忙吗。

  • 我正在尝试与Linux中的mysql数据库连接。我知道我在包含jar文件时犯了错误。我不知道如何在linux中引用这些jar文件,就像我们在eclipse或NetBeans中引用它们一样。我正在使用Tomat7运行这些jsp页面。 类型异常报告 消息处理第9行的JSP page/first.JSP时发生异常 说明服务器遇到内部错误,导致它无法完成此请求。 例外情况 JasperException: