どのようにHttpPost要求をサーバーでPHPスクリプトに送信する

これはAndroidでHttpPostメソッドを使用するPHPコードです。 postメソッドと一緒に送られたjsonオブジェクトがデータベースに存在するデータと一致しているかどうかチェックしたい

if(!isset($_POST['data'])) {
    echo "FAIL1";   
    return 'false';
}

$jsonObject = $_POST['data'];
$data = json_decode($jsonObject, true);

if(!is_array($data)) {
    print_r($data);
    exit;  
    echo "FAIL2";
    return 'false';
}

$UNIQUE_ID = $data['UNIQUE_ID'];
$BAR_CODE = $data['BARCODE'];
$BATCH_CODE = $data['BATCHCODE'];

if(!isset($UNIQUE_ID) || trim($UNIQUE_ID) == '' || !isset($BAR_CODE) || trim($BAR_CODE) == '' || !isset($BATCH_CODE) || trim($BATCH_CODE) == '') {
    echo "FAIL3";
    return 'false';
}

$link = mysql_connect($db_server,$db_username,$db_pasword) or die("Can not connect to server $db_server.");

mysql_select_db("drugverifier",$link);

$query = "SELECT * FROM drugverifier where unique_id = $UNIQUE_ID AND bar_code = $BAR_CODE AND batch_code = $BATCH_CODE";
echo " TEST4";
$result = mysql_query($query,$link) or die("Can not able to run the query ' $query ' on server $db_server.");
echo "TEST5";
if(mysql_num_rows($result) > 0){
    echo "SUCCESS6";
    echo 'true';
}
else {
    echo "FAILURE7";
    echo 'false';
}

私のアンドロイドコードは:

JSONObject j = new JSONObject();
        try {
            j.put("BARCODE", "8904017500190");
            j.put("BATCHCODE", "220");  
            j.put("UNIQUE_ID", "9876"); 

        } catch (JSONException e) {
            Log.v("@@@@@JSONException", e.getMessage());
        }
String url = "http://www.smartcloudinfotech.com/SmartDrugVerifier/verifyBarCode.php";
 HttpClient httpclient = new DefaultHttpClient();
         HttpPost httpPost = new HttpPost(url);

List nameValuePair = new ArrayList(1);
                nameValuePair.add(new BasicNameValuePair("data",j.toString()));
                httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));

                 response = httpclient.execute(httpPost);
                 Log.v("RESPONSE",""+response.toString());
                 Toast.makeText(this, "RESPONSE in doPOST()"+response.toString(), Toast.LENGTH_SHORT).show();


            } catch (UnsupportedEncodingException e) {
                Log.v("@@@@@@@@@@@@@@UnsupportedEncodingException", e.getMessage());
            } catch (ClientProtocolException e) {
                Log.v("@@@@@@@@@ClientProtocolException",e.getMessage());
            } catch (IOException e) {
                Log.v("@@@@@@@@@@IOException116", e.getMessage());
            } 

String temp = EntityUtils.toString(response.getEntity());

私がこのプログラムを実行すると、変数tempの値には値は含まれません。 私が間違っているところで私を助けてください。

0
あなたのAndroidコードがコンパイルされているようには見えません。あなたはAndroidコードを実行できますか?
追加された 著者 Nick Garvey,
はい、私はこのコードを削除してコンパイルしました。いくつかの部分は、そのような何かのようなキャッチブロックを試してみたように見逃されるかもしれません、それはコンパイル時のエラーを表示しています..?
追加された 著者 prateek,
私の友人の@NickGarveyは、値がスクリプトに渡されていないために応答が得られないと言った
追加された 著者 prateek,

2 答え

以下のように HttpEntity の内容を読むために BufferedReader を使用してみてください:

void printResponse(HttpResponse response) throws IOException {
    BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
    String line = "";
    while ((line = in.readLine()) != null) {
        System.out.println(line);
    }
}

Edit
When I issue a POST using Curl to your server, with data=test, I get no response. I think it's due to this code:

if(!is_array($data)) {
    print_r($data);
    exit;  
    echo "FAIL2";
    return 'false';
}

まず、配列でない場合は、配列を印刷します。それは意味をなさない。 第二に、あなたは終了し、あなたはあなたの "FAIL2"をエコーし​​ます。

0
追加された
回答を編集しました
追加された 著者 nhaarman,
それは動作していません
追加された 著者 prateek,
print_r($ data);出口;この部分は後で私が何の反応も得ていない時に書かれています。私の価値がスクリプトに渡されていないので、何の応答も得られない
追加された 著者 prateek,

Androidで応答が間違っていると読んでいます

HttpResponse response = httpclient.execute(httppost);
String result = EntityUtils.toString(response.getEntity());

また、私は大きなPHPプログラマではありませんが、私はあなたがJSONObjectを渡している限り私はあなたがJSONArrayを渡していないPHPで値を誤って読んでいると信じています。また、

print_r($data);
exit; 
0
追加された
配列$ UNIQUE_ID = $ data ['UNIQUE_ID']として値を取得しようとしています。 $ BAR_CODE = $ data ['BARCODE']; $ BATCH_CODE = $ data ['BATCHCODE'];これは配列ではないので動作しません。また、実際に失敗したことを確認するために小切手を分けてみてください。あなたのifステートメントでは、すべてを個別にチェックし、一意のエラーを送信します。そうすれば、エラーの場所を正確に知ることができます。
追加された 著者 mbwasi,
json配列を渡していないと私に伝えてくれてありがとう。 if(!is_array($ data)){print_r($ data);}を削除しました。出口;エコー "FAIL2"; 「偽」を返します。 }この部分は、今のところスクリプトが応答として "FAIL3"を返す
追加された 著者 prateek,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com

JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript