2014-11-23 104 views
-1

首先,我對Java很新,我正在嘗試爲家庭自動化製作應用程序。 在服務器端,我有一個PHP腳本,將切換我的燈,現在我想發送一個Get請求與Android運行PHP腳本,因爲PHP是服務器端。 現在,當我按下按鈕時,應用程序「正好」崩潰,日誌中沒有任何內容。http獲取android應用程序崩潰沒有結果,也沒有錯誤

這是我對按鈕的代碼:

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) – 2014-11-23 16:33:20

+0

張貼您的logcat?我們無法預測您的錯誤。 – stacktry 2014-11-23 17:07:55

回答

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 2014-11-23 17:24:28

+0

快樂編碼:) – 2014-11-23 17:26:20

+0

BTW..You可以標記我的答案,並把它投票;) – 2014-11-23 17:28:39

0

也許你正在主線程對這個請求。使用AsyncTask來完成您的聯網請求。 也不要忘了許可android.permission.INTERNET添加到清單文件

相關問題