2013-05-07 3 views
3

Я полностью, отчаянный, поэтому я прошу вас о помощи. У меня есть следующий код в андроид приложения:HTTP-запрос на 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" в моем файле манифеста.

ответ

4

Вы не можете выполнить сетевую операцию в основной теме. Выполните это в asynctask.

Update:

Ваши данные LogCat показывает у вас есть NetworOnMainThreadException. Согласно doc

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

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

Решение:

Как я уже упоминал, вы должны использовать другой поток для выполнения операций сети. Вы можете использовать следующие действия

  1. AsyncTask
  2. гладкошерстных рабочий поток
  3. Handler

Проверьте это thread. Ответы на этот вопрос охватывают практически все решения

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