【问题标题】:JSON-data from iOS into PHP-script从 iOS 到 PHP 脚本的 JSON 数据
【发布时间】:2011-12-20 14:10:18
【问题描述】:

如何访问通过 http-post 接收的 php 脚本中的 json 数据? 我在 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-script中调用json_decode(...)时,...是什么?

【问题讨论】:

  • 调试这类东西的一个好方法是var_dump($_POST) 到一个日志文件,看看你收到了什么。
  • 我建议首先找到一个基本的 PHP 课程,以确保您了解 PHP 的基础知识(获取 POST 数据是相当基础的)。
  • 抱歉,直接发布 json-data 时,$_POST 不包含任何数据。访问 'php://input' 对我来说似乎不是那么基本。
  • 哇 - 所有的反对票是怎么回事?

标签: php iphone ios json


【解决方案1】:

如果您在 POST 方法中发送您的 JSON,可以使用以下代码在 PHP 中接收

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

【讨论】:

  • @nakkeeran,我们可以一直使用 php://input 吗?以前从未使用过,但它似乎适用于我的本地设置
【解决方案2】:

使用 iOS 发送的 post 请求不适用于 $_POST。如果使用 js 发出类似的请求,则 post 中的 json 确实有效。

【讨论】:

  • 正确的做法是将标题设置为 text/html。如果您将标头设置为 application/json php 脚本只会搞砸。
【解决方案3】:

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

json_decode($data);

这会给你一个你可以使用的对象。

【讨论】:

  • 我想。试一试,让我知道
  • 不,我不使用 $_POST。顺便说一句,为什么这个问题会得到如此多的反对票?!有什么不好的?
【解决方案4】:
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"];  

此代码可用于发送响应

【讨论】:

    猜你喜欢
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多