3

JSON を使用せずに、Android アプリが PHP ページから正常に応答を取得できるかどうかをテストしたかったのです。php には が含まれているだけですがecho "hello";、Toast に失敗しました。私が見つけることができる最も近い解決策は、コードにその一部を入れようとした場所です: httppostから送信された文字列を表示するにはどうすればよいですか?

以下のような私のコード(更新):

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 に行が表示されていません。どの部分が間違っていますか? 注: handler はクラスで宣言されています。

4

1 に答える 1

2

必ず UI スレッドでトーストを実行してください。実行しないと失敗します。Handler を使用するか、ネットワーク操作を AsyncTask にラップして、UI スレッドによって処理される onPostExecute メソッドに結果を渡します。

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

これが問題でない場合は、ログを追加してサーバーからの応答を確認し、LogCat で「hello」を確認します。

于 2012-12-15T18:04:17.137 に答える