3

PHPスクリプトに単純なHTTPRequestを作成したいのですが、機能を機能させるために最も基本的なアプリを作成しようとしました。アプリがフィードしたデータを送信していることをテストしたいので、Androidアプリをサーバーに送信し、そのサーバーはアプリに入れたデータを送信するはずです。「postData」関数のコードは、アンドロイドからサーバーにデータを送信することであり、「default.php」のコードは、データを私のメールアドレスに転送する Web サーバー上の受信 php ファイルです (指定されていません)。ここにコードがあります

    public void postData() {

    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://somewhere.net/default.php");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("thename", "Steve"));
        nameValuePairs.add(new BasicNameValuePair("theage", "24"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        //HttpResponse response = httpclient.execute(httppost);

        // Execute HTTP Post Request
        ResponseHandler<String> responseHandler=new BasicResponseHandler();
        String responseBody = httpclient.execute(httppost, responseHandler);

    //Just display the response back
    displayToastMessage(responseBody);

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
}

「default.php」と同様に

<?php 
$thename=$_GET["thename"]; 
$theage=$_GET["theage"];

$to = "someemail@gmail.com";
$subject = "Android";
$body = "Hi,\n\nHow are you," . $thename . "?\n\nAt " . $theage . " you are getting old.";
if (mail($to, $subject, $body)) 
{
echo("<p>Message successfully sent!</p>");
} 
else 
{
echo("<p>Message delivery failed...</p>");
}
?>

ペーストビン内のコードへのリンクは次のとおりです: postData()およびdefault.php

メールを受信しましたが、送信されたデータ「thename」と「theage」が空のようです。受信した正確な電子メールは、「こんにちは、お元気ですか?年をとっています。」これは、サーバーが名前と年齢を空として送信していることを示しています。以前にこれを試したことがありますか?私は間違って何をしていますか? 私のコードを読んでくれて、できれば質問に答えてくれてありがとう。

編集:私の非常にばかげた->「GETS」を「POST」に変更する必要があります。アーカイブの目的でここに残します:)

4

3 に答える 3

10

投稿されたデータの値を取得する$_GET代わりに使用しています。$_POSTあなたがしたい

<?php 
$thename=$_POST["thename"]; 
$theage=$_POST["theage"];
于 2012-04-20T12:19:13.530 に答える
1

POST リクエストを送信していますが、php スクリプトは GET 変数を使用しています

試す

 $thename=$_POST["thename"]; 
$theage=$_POST["theage"];
于 2012-04-20T12:20:37.627 に答える
-1

Android と PHP の両方で使用されるメソッドは、GETまたはPOST.

この場合、PHP を次のように変更できます -

$thename = $_POST["thename"];
$theage = $_POST["theage"];

または、Android側をこれに変更します-

HttpGet httppost = new HttpGet("http://somewhere.net/default.php");
于 2015-01-26T08:39:36.617 に答える