2011-12-20 15 views
5

http-post経由で受け取ったphpスクリプト内でjsonデータにアクセスするにはどうすればよいですか?私は、iOS側で次のように やってる:iOSからPHPスクリプトへのJSONデータ

NSData *data = [NSJSONSerialization dataWithJSONObject:object options:0 error:NULL]; 

NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://example.com/script.php"]]; 
[req setHTTPMethod:@"POST"]; 
[req setHTTPBody:data]; 

[NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&err]; 

私は、PHPスクリプトでこのデータにアクセスするにはどうすればよいですか?言い換えれば、私がjson_decode(...)をphpスクリプトに呼び出すと、...とは何ですか? PHPスクリプトで

+0

を送信するために使用することができます'ログファイルに、あなたが送っなっているものを参照してください。 – jprofitt

+0

私は基本的なPHPコースを最初に見つけて、PHPの基本(POSTデータを得ることはかなり基本的です)を理解することをお勧めします。 –

+4

申し訳ありませんが、$ _POSTにはjson-dataを直接投稿する際にデータが含まれていません。そして、 'php:// input'にアクセスすることは私にはあまり基本的ではないようです。 –

答えて

14

あなたは、POSTメソッドであなたのJSONを送信する場合には、それは以下のコード

<?php $handle = fopen('php://input','r'); 
       $jsonInput = fgets($handle); 
       // Decoding JSON into an Array 
       $decoded = json_decode($jsonInput,true); 
?> 
+1

ありがとう!完璧! –

+0

ありがとうございましたありがとう... – Elby

+0

@nakkeeran、いつもphp:// inputを使用できますか?以前はそれを使用したことはありませんでしたが、私のローカルセットアップで動作するようです。 – alex

0

あなたはPOSTデータを取得し、

json_decode($data); 

を行うと、それはあなたがして働くことができるオブジェクトを提供します。

+0

$ dataとは何ですか?それは$ _POSTですか? –

+0

だと思います。それを打ち、私に知らせてください – macintosh264

+0

いいえ、私は$ _POSTで動作しません。ところで、なぜこの質問は非常に多くのダウン投票を得るのですか?何が悪いですか? –

1

iOS版が$ _POSTで動作しません使用して送信されたPOSTリクエストをPHPで受信することができます。 jsを使用して同様のリクエストが発行された場合、postのjsonが機能します。

+0

正しい方法は、ヘッダーをtext/htmlに設定することです。ヘッダーをapplication/jsonに設定した場合、PHPスクリプトはちょうどそれを台無しにします。 –

0
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
    [request setHTTPMethod:@"POST"]; 
    [request setHTTPBody: jsonData]; 
    [request setValue:@"text/html" forHTTPHeaderField:@"Content-Type"]; 
    [request setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"]; 

このコードは、原料のこの種をデバッグするための良い方法はのvar_dump($ _ POST) `にある応答

関連する問題