【问题标题】:HTTP request on AndroidAndroid 上的 HTTP 请求
【发布时间】:2013-05-07 15:15:12
【问题描述】:

我完全绝望了,这就是我向你寻求帮助的原因。我在一个 android 应用程序中有以下代码:

public void OnButtonClick(View view) throws ClientProtocolException, IOException, Exception
{       
    URL yahoo = new URL("http://privyrobsi.sk/brigades/getBrigades.json");
    URLConnection yc = yahoo.openConnection();
    BufferedReader in = new BufferedReader(
                            new InputStreamReader(
                            yc.getInputStream()));
    String inputLine;

    EditText ET = (EditText) findViewById(R.id.editText2);
    while ((inputLine = in.readLine()) != null) ET.setText(ET.getText()+inputLine);         
    in.close();        
}

我从here 得到这个代码,我只是稍微修改了一下。 当我尝试将代码作为独立的 java 应用程序运行时,它可以工作。但是当我尝试在android中使用它时,模拟器说不幸的是,应用程序停止了。 我从 LogCat here 保存了日志。 我的清单文件中也有使用权限 android:name="android.permission.INTERNET"。

【问题讨论】:

    标签: java android httprequest


    【解决方案1】:

    您不能在主线程中执行网络操作。在asynctask 中执行此操作。

    更新:

    您的 logcat 数据显示您遇到了 NetworOnMainThreadException。根据doc

    当应用程序尝试在其主线程上执行网络操作时引发的异常。

    这仅针对以 Honeycomb SDK 为目标的应用程序或 更高。允许针对早期 SDK 版本的应用程序执行 在他们的主事件循环线程上联网,但它很重 气馁。

    解决方案:

    正如我已经提到的,您必须使用不同的线程来执行网络操作。您可以使用以下

    1. 异步任务
    2. 不同的工作线程
    3. 处理程序

    检查此thread。这个问题的答案几乎涵盖了所有的解决方案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多