AFNetworkingを用いてphpにPOST送信をしたが、 json_decodeの値がNULLになる。
iOSから2個の文字列をデータベース(MySQL)に保存したいと思っておりまして、
AFNetworkingを使って、JSON形式でphpにPOST送信するプログラムをテスト中です。
今回は以下のJSONデータをiOSからphpに送りたいと考えています。
・JSON
{
“name” : “yamada”,
“content” : “hello”
}
・iOSプログラム
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
NSDictionary *params = @{@"name":@"yamada",
@"content":@"hello"};
NSString *url = @"http://kokun.sakura.ne.jp/test/test.php";
[manager POST:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
NSString *responseStr = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"%@",responseStr);
}failure:^(AFHTTPRequestOperation *operation, NSError *error){
NSLog(@"Error: %@", error);
}];
・phpプログラム
<?php
header('Content-Type: application/json');
$post = file_get_contents('php://input');
$postDecode = json_decode($post);
// テキストファイルにログを出力
ob_start();
var_dump($postDecode);
$result =ob_get_contents();
ob_end_clean();
$fp = fopen("./dump.txt", "a+" );
fputs($fp, $result);
fclose( $fp );
?>
php側で受け取ったデータ(変数$post)を表示してみると
string(25) "content=hello&name=yamada"
という文字列が表示され、一見成功しているように思いましたが、
これをjson_decodeしてみた値(変数$postDecode)を表示してみると
値がNULLになってしまいます。
詳しい方、ご教示いただければ幸いです。
【追記】
アドバイスをいただけたおかげで、
下記コードで無事解決しました。
・phpプログラム(修正後)
<?php
$name = $_POST['name']; // yamadaが表示される
$content = $_POST['content']; // helloが表示される。
?>