【问题标题】:A 'HttpGet' request forces a close'HttpGet' 请求强制关闭
【发布时间】:2013-01-11 21:51:11
【问题描述】:

我使用以下代码,当我单击一个按钮时,它会强制关闭。我想从网页读取响应并将其显示在消息框或编辑文本或其他任何内容中。

我该如何解决这个问题?

代码

    HttpGet request = new HttpGet("http://www.google.com");
    HttpClient client = null;
    HttpResponse resp = null;
    try {
        resp = client.execute(request);
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    HttpEntity entity = resp.getEntity();
    MessageBox("Response : "+entity.toString());
}

【问题讨论】:

  • 发布堆栈跟踪并确保您没有在主 (UI) 线程上执行网络操作,您可能正在这样做。
  • 您使用的是什么版本的 Android?因为我可能有答案..\
  • 从代码看来,您初始化了HttpClient client = null,然后调用client.execute(request)。您是否应该使用 null 以外的其他名称初始化 HttpClient
  • @harism 在这里是正确的,当前的代码肯定会在resp = client.execute(request) 线上抛出一个NullPointerException ...一旦解决了这个问题,你就会得到Ramesh的答案中显示的问题Sangili,假设您当前没有在某种类型的后台线程中运行

标签: android response http-get


【解决方案1】:

您正尝试在您的 UI 代码中运行 HTTP 请求。这就是您获得强制关闭的原因。请尝试在服务、AysncTask 或 Thread 中运行它,以免 UI 线程被阻塞。

请参考示例Android HTTP Request in AsyncTask

【讨论】:

  • 我相信这在 2.3 及以下版本中被归类为最佳实践。根据他的平台,这个答案是正确的。
猜你喜欢
  • 2014-02-11
  • 1970-01-01
  • 2019-09-30
  • 1970-01-01
  • 2013-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多