1

这是我发出http请求的示例代码,但它没有这样做。这是我在 LogCat 中看到的错误日志。http://pastebin.com/56AL8Dxu 我也在<uses-permission android:name="android.permission.INTERNET"></uses-permission>清单中添加了。请帮帮我..在Android中发出一个简单的http请求真的那么难吗?我来自.Net背景学习Android开发。

void testHTTP()
 {
  HttpClient httpClient = new DefaultHttpClient();

  HttpUriRequest request = new HttpPost("http://www.google.com");

  try {
   HttpResponse response = httpClient.execute(request);

   //System.out.println("response protocol version: " + response.getProtocolVersion());
  } catch (ClientProtocolException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }
4

2 回答 2

5

As stated in the Logcat log:

04-29 19:59:53.072: E/AndroidRuntime(546): android.os.NetworkOnMainThreadException

You perform testHTTP(), which involves networking on main thread, which is not allowed. Move it to a background thread, or use AsyncTask.

于 2012-04-29T14:37:39.267 回答
1

好的 Binyamin Sharet 是正确的,我引用了 Android 文档

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

这仅针对面向 Honeycomb SDK (3.0) 或更高版本的应用程序抛出。允许以早期 SDK 版本为目标的应用程序在其主事件循环线程上进行网络连接,但非常不鼓励这样做。请参阅文档设计响应性。

于 2012-04-29T14:52:14.160 回答