1

サーバーにデータを送信する簡単なチュートリアルを作成します

onCreate内にボタンを作成します

Button button = (Button) findViewById(R.id.send);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Perform action on click

                postData();
            }
        });

これがデータを送信するための私のコードです

public void postData() {
        // Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://www.www.www/hama/test123.php");

        //This is the data to send
        String MyName = "adil"; //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()

ボタンを押そうとすると、ページを更新しようとしてもWebサーバーに結果が表示されません。ページが空白で結果がありません。

これが私のphpコードです

<?php

//code to reverse the string

$reversed = strrev($_POST["action"]);

echo $reversed;

?>

それを修正する方法は?

4

1 に答える 1

0

まず第一に、 UIスレッドでネットワークアクションを実行しないでください。アプリが応答しなくなります。

String response = httpclient.execute(httppost, responseHandler);

これは実際には文字列ではなくHttpResponseを返します。代わりにこれを行ってください:

final HttpResponse response = httpClient.execute(get, localContext);

final HttpEntity entity = response.getEntity();
final InputStream is = entity.getContent();
final InputStreamReader isr = new InputStreamReader(is, "ISO-8859-1");
final BufferedReader br = new BufferedReader(isr);
String line = "";
String responseFromServer = "";
while ((line = br.readLine()) != null) {
     responseFromServer += line;
}

responseFromServerサーバーの応答が含まれます。

そして、次回は少なくともex.printStackTrace()キャッチブロックでいくつかやってみて、何が起こっているのかを知ってください。

于 2013-03-21T12:25:37.050 に答える