从iOS到PHP脚本的JSON数据

时间:2011-12-20 14:10:18

标签: php iphone ios json

如何在php脚本中访问json数据,它是通过http-post收到的? 我正在iOS上做以下事情:

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脚本中访问此数据?换句话说,当我在php脚本中调用json_decode(...)时,...是什么?

4 个答案:

答案 0 :(得分:14)

如果您使用POST方法发送JSON,可以使用以下代码

在PHP中接收它
<?php $handle = fopen('php://input','r');
                $jsonInput = fgets($handle);
                // Decoding JSON into an Array
                $decoded = json_decode($jsonInput,true);
?>

答案 1 :(得分:1)

使用iOS发送的帖子请求不适用于$ _POST。如果使用js发出类似请求,则post中的json可以正常工作。

答案 2 :(得分:0)

在php脚本中,您可以获取POST数据并执行

json_decode($data);

这将为您提供一个可以使用的对象。

答案 3 :(得分: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"];  

此代码可用于发送回复