2013-03-21 2 views
0

Я пытаюсь разработать приложение для Android, которое может подключаться к Интернету и читать данные с указанного сайта. Однако, когда я запускаю программу на эмуляторе, ничего не происходит. Может ли кто-нибудь помочь мне помочь мне в том, что мне нужно сделать? Вот мой кодПопытка получить приложение для Android на эмуляторе

public class HttpExaplme extends Activity { 
TextView httpStuff; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.httpex); 
    httpStuff = (TextView) findViewById(R.id.tv_http); 
    GetHttpEx test = new GetHttpEx(); 
    String returned; 
    try { 
     returned = test.getInternetData(); 
     httpStuff.setText(returned); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

public class GetHttpEx { 

public String getInternetData() throws Exception 
{ 
    BufferedReader in = null; 
    String data = null; 
    try{ 
     HttpClient client = new DefaultHttpClient(); 
     URI website = new URI("http://www.mybringback.com"); 
     HttpGet request = new HttpGet(); 
     request.setURI(website); 
     HttpResponse response = client.execute(request); 
     in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
     StringBuffer sb = new StringBuffer(""); 
     String l =""; 
     String nl= System.getProperty("line sperator"); 
     while((l = in.readLine())!=null) 
     { 
      sb.append(l + nl); 
     } 
     in.close(); 
     data = sb.toString(); 
       return data; 
     } 
    finally 
    { 
     try{ 
      if(in != null) 
       { 
        in.close(); 
        return data; 
       } 
     } 
     catch(Exception e){ 
      e.printStackTrace(); 
     } 

    } 
} 
+0

Из командной строки (и предположим, что у вас есть PATH) выполните следующую команду, чтобы просмотреть ваши журналы (и увидеть вашу ошибку): adb logcat – Booger

+0

Из сотовой версии android это было сделано принудительно. Работа с интерфейсом UI работает на complsory в потоке пользовательского интерфейса и работает с Non-UI thread на Non UI Thread. – Hemant

ответ

0

Вы терпите крах, потому что выполняете HTTP-запросы в своем потоке пользовательского интерфейса. Это не разрешено - вы сделаете свое приложение невосприимчивым, поэтому оно выдает исключение. Все HTTP-запросы должны быть сделаны в потоке или в AsyncTask.

+0

В дополнение к этому, если вы просто отлаживаете и тестируете бит, вы можете отключить эту проверку, просто отключив targetSdk в файле manifest.xml, поскольку старые версии не выполняют эту проверку. Вы должны, конечно, никогда не запускать такое приложение, как это. –

0

Прежде всего, проверьте, имеет ли эмулятор возможность подключения к http://www.mybringback.com. Сделайте это, открыв этот сайт в браузере Android. Корпоративные брандмауэры по умолчанию блокируют запросы эмулятора.

Во-вторых, как сказал @Gabe, заверните свои сетевые запросы в AsyncTask. Здесь: http://developer.android.com/reference/android/os/AsyncTask.html

Вернитесь сюда после этих шагов. Пожалуйста, разместите stacktrace. Вы можете просмотреть его в logcat (adb -e logcat в командной строке).

НТН

EDIT: Установили ли вы android.permission.INTERNET в манифесте?