2012-04-11 1 views
1

私はjsonarrayをサーバーにアップロードしてから、応答テキストを取得して、サーバーがオブジェクトに対して何を行うかを調べようとしています。私は単なる文字列をエコーし​​て、うまくいけば、後に取得しようとしています現時点では私はサーバーに送信しているものを示すPHPコードを作成する方法?

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]"] 

  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から次のようになりますアンドロイド側では、私はこのコードを持っています文字列のうち表:

:ここ

<?php 

    echo $_POST['jsonarray']; 

    ?> 

私はlogcatから取得しています回答しています

これを修正して、サーバーに送信する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サーバー側の処理方法を解説します。助けてくれてありがとう!

答えて

0

は$ _POST [ 'jsonarrayを']エコーを。

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

+0

助けてくれてありがとう! json_aサーバー側から情報を取得する方法はありますか? – Stagleton

+0

http://php.net/manual/en/function.json-decode.php – symcbean

1

私は(私は、Android/Javaのを知らない)あなたの問題を引き起こしているのか分からないが、それをデバッグするための最良の方法は、PHPで簡単にこれまでに次のようになります。

<?php 
    var_dump($_POST); 
?> 

この意志をPOSTによって受け取ったすべてのものをPHPが出力するようにします。

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()); 
+0

うーん(これはSTDINに書き込まれた内容にピックアップしていないが、POSTとして正しくenclodedません)

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

:あなたはすべてのHTTP変数とリクエストヘッダを見たい場合は、のようなものを試してみてください私はこの方法を、さまざまなPHP設定すべてで試してみました。応答テキストは次のとおりです:array(0){} – Stagleton

+0

要求が正しく送信されているかどうかを調べるためにFiddlerを使います。 – SiN

関連する問題