java - Android 上的 HTTP 请求

标签 java android httprequest

我完全绝望了,这就是我向你寻求帮助的原因。我在 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 . 我的 list 文件中也有 uses-permission android:name="android.permission.INTERNET"。

最佳答案

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

更新:

您的 logcat 数据显示您有一个 NetworOnMainThreadException。根据doc

The exception that is thrown when an application attempts to perform a networking operation on its main thread.

This is only thrown for applications targeting the Honeycomb SDK or higher. Applications targeting earlier SDK versions are allowed to do networking on their main event loop threads, but it's heavily discouraged.

解决方案:

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

  1. 异步任务
  2. 不同的工作线程
  3. 负责人

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

关于java - Android 上的 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16422627/

相关文章:

java - FieldUndefined 类型的验证错误 : Field 'register' in type 'Query' is undefined

java - Hibernate 类型转换问题。

android - 在模拟器上更新到 SDK 4.1.0 后 MapBox Android 应用程序崩溃

java - PerformClick()方法不起作用,出现错误

java - 如何使用java对HTTPS请求进行授权?

grails - 在 Grails 中,如何获取包含请求参数的请求 URI?

java - java 的 hashCode() 是确定性的吗?

java - Cloudera Manage 5.7.0,cloudera-scm-agent无法启动,无法创建pidfile

android - 如何在android中控制当前正在播放的音乐播放器?

java - http请求的基本解释