1

jsonarrayをサーバーにアップロードしてから、応答テキストを取得して、サーバーがオブジェクトに対して何を行うかを確認しようとしています。アンドロイド側では、私はこのコードを持っています:

            HttpPost httppost = new HttpPost("http://10.0.0.2/namedate.php");I am 
            HttpClient httpclient = new DefaultHttpClient();
            httppost.getParams().setParameter("jsonarray", json_a.toString());
            HttpResponse response = httpclient.execute(httppost);
            String responseText = EntityUtils.toString(response.getEntity());
            Log.d("ProviderTester", "The response text is "+ responseText);
            Log.i("JSONInfo","JSON object: " + json_a.toString());

jsonarrayは、logcatから次のようになります。

04-10 21:29:53.293: I/JSONInfo(466): JSON object: ["[name=Mike, datetime=2012-04-10 21:29]","[name=Roger, datetime=2012-04-10 21:29]"]

現時点では、文字列をエコーし​​て、後で文字列からテーブルを取得しようとしています。

   <?php

    echo $_POST['jsonarray'];

   ?>

これが私がlogcatから得ている応答です:

04-10 22:22:20.033: D/ProviderTester(499): The response text is 

サーバーに送信しているjsonarray文字列を確認できるように、これを修正するにはどうすればよいですか?

編集:Androidコードを次のように変更した場合:

            ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("json_a", json_a.toString()));

            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            String responseText = EntityUtils.toString(response.getEntity());

次に、phpスクリプトで受け入れられた回答を使用して、LogCatで次の応答を取得します。

04-10 23:05:39.833: D/ProviderTester(601): The response text is POST = array (
04-10 23:05:39.833: D/ProviderTester(601):   'json_a' => '[name=Mike, datetime=2012-04-10 21:29]\\",\\"[name=Roger, datetime=2012-03-10 21:29]\\"]\\"]',
04-10 23:05:39.833: D/ProviderTester(601): )
04-10 23:05:39.833: D/ProviderTester(601): GET = array (
04-10 23:05:39.833: D/ProviderTester(601): )
04-10 23:05:39.833: D/ProviderTester(601): request = array (
04-10 23:05:39.833: D/ProviderTester(601):   'Content-Length' => '174',
04-10 23:05:39.833: D/ProviderTester(601):   'Content-Type' => 'application/x-www-form-urlencoded',
04-10 23:05:39.833: D/ProviderTester(601):   'Host' => 'graasdfon.hostei.com',
04-10 23:05:39.833: D/ProviderTester(601):   'Connection' => 'Keep-Alive',
04-10 23:05:39.833: D/ProviderTester(601):   'User-Agent' => 'Apache-HttpClient/UNAVAILABLE (java 1.4)',
04-10 23:05:39.833: D/ProviderTester(601):   'Expect' => '100-Continue',
04-10 23:05:39.833: D/ProviderTester(601): )
04-10 23:05:39.833: D/ProviderTester(601): 
04-10 23:05:39.833: D/ProviderTester(601): <!-- www.000webhost.com Analytics Code -->

ここで、json_aサーバー側を処理する方法を理解する必要があります。助けてくれてありがとう!

4

3 に答える 3

1

問題の原因はわかりませんが (Android/Java はわかりません)、デバッグする最善の方法は、単純に PHP で次のようにすることです。

<?php
    var_dump($_POST);
?>

これにより、PHP は POST 経由で受け取ったすべてを出力します。

于 2012-04-11T16:07:16.080 に答える
0

投稿のエンティティで json 値を渡す必要があります。これを試して:

StringEntity params =new StringEntity(json_a.toString());
httppost.addHeader("content-type", "application/x-www-form-urlencoded");
httppost.setEntity(params);

それ以外の:

httppost.getParams().setParameter("jsonarray", json_a.toString());
于 2012-04-11T16:24:22.390 に答える
0

echo $_POST['jsonarray'];

PHP には、非スカラー データ型の暗黙的な toString() 表現を行う方法がありません。明示的な変換を行う必要があります。

たとえば、すべての HTTP 変数とリクエスト ヘッダーを表示するには、次のようにします。

<?php

$out="POST = " . var_export($_POST, true) . "\n";
$out.="GET = " . var_export($_GET, true) . "\n";
$out.="request = " . var_export(getallheaders(), true) . "\n";
print $out;

?>

(これは、STDIN に書き込まれているが、POST として正しく封入されていないコンテンツを取得しません)

于 2012-04-11T16:48:03.697 に答える