2013-04-10 3 views
0

Я пытаюсь отправить HTTP-запрос http://www.google.com/ и хочу сохранить все ответы в своем приложении для Android. Я пробовал много подходов, но каждый раз, когда у меня возникали ошибки или ошибка logcat, или мой эмулятор остановился.Android HttpGet запрос не отправляется

Не могли бы вы указать, что не так с моим кодом и дать мне некоторые советы по настройке? Я хочу иметь возможность использовать как GET, так и POST.

public void executeHttpGet() throws Exception { 
    BufferedReader in = null; 
     try { 
      HttpClient client = new DefaultHttpClient(); 
      HttpGet request = new HttpGet(); 
      request.setURI(new URI("http://www.google.com/")); 
      HttpResponse response = client.execute(request); 
      in = new BufferedReader 
      (new InputStreamReader(response.getEntity().getContent())); 
      StringBuffer sb = new StringBuffer(""); 
      String line = ""; 
      String NL = System.getProperty("line.separator"); 
      while ((line = in.readLine()) != null) { 
       sb.append(line + NL); 
      } 
      result.setText(sb.toString()); 

      in.close(); 
      String page = sb.toString(); 
      System.out.println(page); 
      Debug.out(sb.toString()); 

      } finally { 
      if (in != null) { 
       try { 
        in.close(); 
        } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 

LogCat:

04-09 20:56:07.730: E/AndroidRuntime(9128): FATAL EXCEPTION: main 
04-09 20:56:07.730: E/AndroidRuntime(9128): java.lang.RuntimeException: Unable to start activity ComponentInfo{mainpackage.rest_client/mainpackage.rest_client.GetResponse}: android.os.NetworkOnMainThreadException 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at android.os.Looper.loop(Looper.java:137) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at java.lang.reflect.Method.invoke(Method.java:511) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at dalvik.system.NativeStart.main(Native Method) 
04-09 20:56:07.730: E/AndroidRuntime(9128): Caused by: android.os.NetworkOnMainThreadException 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at java.net.InetAddress.lookupHostByName(InetAddress.java:385) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at java.net.InetAddress.getAllByName(InetAddress.java:214) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at mainpackage.rest_client.GetResponse.QueryGooglePlus(GetResponse.java:75) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at mainpackage.rest_client.GetResponse.onCreate(GetResponse.java:61) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at android.app.Activity.performCreate(Activity.java:5104) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
04-09 20:56:07.730: E/AndroidRuntime(9128):  ... 11 more 
04-09 20:56:08.330: D/dalvikvm(9128): GC_CONCURRENT freed 204K, 11% free 2889K/3216K, paused 6ms+44ms, total 417ms 
04-09 20:56:11.640: I/Process(9128): Sending signal. PID: 9128 SIG: 9 
+1

отправьте код, который вы пробовали? –

+1

Вы выполняете запрос в основной теме? – thepoosh

+0

почтовый код и логарифм – Shiv

ответ

0

Пожалуйста, проверьте, если у вас есть доступ к Интернету в тренажере.

Если вы не получаете доступ к Интернету, то попробуйте ниже решения, он работал для меня :)

Issue in accessing internet through android applications.

+0

мой браузер работает в симуляторе, но код не является:/ – aqeel

1

У вас есть NetworkOnMainThreadException. Сделайте свою сеть в AsyncTask.

+1

, а не отвечать на него, пожалуйста, закройте вопрос как дубликат из любого вопроса о zillions о NetworkOnMainThreadException. – njzk2

+0

@ njzk2 вы, похоже, настроены на птицу, основываясь на ваших последних комментариях, возможно, вам стоит немного отдохнуть, пока это вас так сильно огорчит. Почему вас волнует, если один человек хочет помочь другому человеку? – FoamyGuy

+0

@FoamyGuy: Я думаю, что тысячи (буквально) идентичных вопросов о NetworkOnMainThreadException не _help_ никому. Не тот, кто задал вопрос, так как каждый ответ может иметь немного больше или немного меньше деталей и объяснений, а не тот, кто будет искать этот ответ, поскольку они найдут множество вопросов и не знают, что следует соблюдать.Этот вопрос должен быть немедленно закрыт, потому что он действительно только для чтения исключения и поиска в Google. (извините, если вы найдете мои комментарии птицами, что бы это ни значило) – njzk2

2

Я думаю, что описание документ достаточно богат, чтобы понять, за исключением NetworkOnMainThreadException

Исключение, которое генерируется, когда приложение пытается выполнить сетевую операцию на ее главном потоке.

Это делается только для приложений, предназначенных для сотового SDK или выше. Приложениям, использующим более ранние версии SDK, разрешено создавать сети в своих основных потоках цикла событий, но в значительной степени обесценивается . Смотрите документ

попробуйте эту ссылку, которая позволит вам знать, как справляться с работой сети http://developer.android.com/training/articles/perf-anr.html

0

Когда у сталкиваются тривиальные вопросы, как они, это всегда лучше для обучения на первый взгляд для exception description прибегая к помощи, то нуль в вопросе, просмотрев объяснение и ссылки, данные как these. Это значительно сокращает время разработки по экспоненте. Просто честное предложение, я не эксперт :)

И ya, AsyncTask должен сделать трюк.

Смежные вопросы