2014-11-23 1 views
-1

Прежде всего, я довольно новичок в Java, и я пытаюсь создать приложение для домашней автоматизации. На стороне сервера у меня есть PHP-скрипт, который будет переключать мои огни, теперь я бы хотел отправить запрос Get с андроидом, чтобы запустить PHP-скрипт, так как этот PHP является серверной. Теперь, когда я нажимаю кнопку, приложение «just» падает, ничего в журнале.http get android app crashes нет результата или ошибки

это мой код для кнопки:

Button bA = (Button) findViewById(R.id.button); 
    bA.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      try { 
       HttpClient httpclient = new DefaultHttpClient(); 

       HttpGet request = new HttpGet(); 
       URI Aswitch = new URI("http://192.168.1.186/a-switch.php"); 
       request.setURI(Aswitch); 
       HttpResponse response = httpclient.execute(request); 

      } catch (ClientProtocolException e){ 
       Log.e("log_tag", "ClientProtocol error"); 
      } catch(IOException e){ 
       Log.e("log_tag", "IO error"); 
      } catch(URISyntaxException e) { 
       Log.e("log_tag", "URISytax error"); 
      } 


     } 
    }); 
+2

Проверьте LogCat. Скорее всего это [NetworkOnMainThreadException] (http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html) –

+0

опубликовать свой логарифм? мы не можем предсказать вашу ошибку. – stacktry

ответ

2

попробовать это:

Button bA = (Button) findViewById(R.id.button); 
    bA.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 


      new Thread(new Runnable() { 

       public void run() { 
        try { 
         HttpClient httpclient = new DefaultHttpClient(); 

         HttpGet request = new HttpGet(); 
         URI Aswitch = new URI("http://192.168.1.186/a-switch.php"); 
         request.setURI(Aswitch); 
         HttpResponse response = httpclient.execute(request); 

        } catch (ClientProtocolException e){ 
         Log.e("log_tag", "ClientProtocol error"); 
        } catch(IOException e){ 
         Log.e("log_tag", "IO error"); 
        } catch(URISyntaxException e) { 
         Log.e("log_tag", "URISytax error"); 
        } 

       } 
      }).start(); 


     } 
    }); 
+0

Большое спасибо, кажется, работает – user2302718

+0

счастливое кодирование :) –

+0

BTW .. вы можете отметить мой ответ и отказаться от него;) –

0

Может быть, вы делаете этот запрос на главном потоке. Используйте AsyncTask, чтобы выполнить свой сетевой запрос. Также не забудьте добавить разрешение android.permission.INTERNET в файл манифеста