-1

これは私がこれまでに持っているコードです。

public void postData(String toPost) {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://www.mywebsite.com/dev/reverser.php");

    //This is the data to send
    String MyName = toPost; //any data to send

    try {
    // Add your data
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
    nameValuePairs.add(new BasicNameValuePair("action", MyName));

    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

    // Execute HTTP Post Request

    ResponseHandler<String> responseHandler = new BasicResponseHandler();
    String response = httpclient.execute(httppost, responseHandler);

    //This is the response from a php application

    String reverseString = response;
    Toast.makeText(this, "response" + reverseString, Toast.LENGTH_LONG).show();

    } catch (ClientProtocolException e) {
    Toast.makeText(this, "CPE response " + e.toString(), Toast.LENGTH_LONG).show();
    // TODO Auto-generated catch block
    } catch (IOException e) {
    Toast.makeText(this, "IOE response " + e.toString(), Toast.LENGTH_LONG).show();
    // TODO Auto-generated catch block
    }

    }//end postData()

次のコードのどこが間違っているのか誰か教えてください! 私は、try catch ブロックにのみ問題があり、アクティビティの他のどこにも問題がないことを確認しました。それが何であるか、またはそれを修正する方法がわかりません。

私の PHP コードは非常に単純です。それはこのようなものです -

//code to reverse the string
$reversed = strrev($_POST["action"]);
echo $reversed;
4

3 に答える 3

1
于 2013-05-17T12:11:01.590 に答える
0

例外を出力してみてください。このコードを使用して、応答を印刷します。応答のステータスを確認する

        HttpResponse response = client.execute(request);

        String line;

        br = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
        while ((line = br.readLine()) != null)
        {
            sb.append(line + "\n");
        }
        br.close();

    } 
    catch(Exception e)
    {
        Toast.makeText(HttpPostActivity.this, "Exception: " + e.toString(), Toast.LENGTH_LONG).show();
    }

例外を教えてください。問題を特定するのは簡単です。

編集:答え:

MAIN スレッドでネットワーク操作を実行しようとしています。これは違法行為です。AsyncTask を作成します。つまり、ネットワーク操作を行う別のスレッドを作成します。

Android 例外の詳細

スタックオーバーフローの質問

于 2013-05-17T12:07:56.623 に答える