2012-12-15 104 views
3

我想測試我的Android應用程序是否可以成功獲取來自php頁面的響應,而不使用JSON。該PHP只包含echo "hello";,但我未能敬酒。我能找到的最接近的解決方案是,在這裏我試圖把它的某些部分進入我的代碼:How can I view the string sent from httppost?Android HTTP POST以獲取沒有JSON的響應,並放入Toast

我的代碼如下(更新):

public void onClick(View v) { 
    Thread t = new Thread() { 
     @Override 
     public void run() { 
      Log.i("Threaded", "Inside thread!!!"); 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://192.168.1.10/fyp/test.php"); 

      try { 
       HttpResponse response = httpclient.execute(httppost); 
       InputStream content = response.getEntity().getContent(); 
       Log.i("Connect", content.toString()); 

       BufferedReader buffer = new BufferedReader(new InputStreamReader(content)); 
       StringBuilder sb = new StringBuilder(); 
       String line = null; 

       while ((line = buffer.readLine()) != null) { 
        sb.append(line + "\n"); 
       } 
       Log.i("Connect", sb.toString()); 

       handler.post(new Runnable() { 
        public void run() {  
         showToastMessage("hello");  
         } 
        }); 
      } catch (Exception e) { 
       Log.e("Connect", "Fail"); 
       e.printStackTrace(); 
      } 
     } 

    }; 
} 

線程似乎沒有運行,其中線Log.i("Threaded", "Inside thread!!!");沒有在LogCat中顯示,哪部分是我做錯了?注意:處理程序已經在類中聲明。

+0

有什麼錯誤? –

+0

請發佈堆棧跟蹤,如果你可以 ,這樣我們就可以知道錯誤是什麼 –

+0

「錯誤」是我不能敬酒的「你好」,在那裏我猜答案被稱爲@尼克拉斯。 –

回答

2

確保您在UI線程上執行了Toast,否則將失敗。 使用處理程序或將您的網絡操作包裝在AsyncTask中,並將結果傳遞給由UI線程處理的onPostExecute方法。

http://developer.android.com/reference/android/os/AsyncTask.html

如果這不是你的問題,添加日誌記錄一看就知道你從服務器的響應,並檢查您的logcat的「你好」

+0

我想這就是問題所在,我沒有使用處理程序,我把它當作接收位置數據的地方。我試圖登錄,它沒有顯示任何內容,也許我錯誤地記錄了它?我在Log循環之後放了'Log.i(「Connect」,sb.toString());'並沒有出現在LogCat中。 –

+0

你能給我一個關於Handler如何在這種情況下使用的例子嗎?從我瀏覽的代碼看來,他們似乎在使用Handler + Message + Bundle,但我不知道如何使用Bundle和響應消息「hello」。 –

+1

您不需要使用消息或Bundle。 用活動線程實例化處理程序,然後用可運行的新Runnable調用handler.post(),執行敬酒。完成。 :P –