访问从 iPhone 应用程序发送的 PHP 中的数组对象
Posted
技术标签:
【中文标题】访问从 iPhone 应用程序发送的 PHP 中的数组对象【英文标题】:Accessing array objects in PHP sent from an iPhone app 【发布时间】:2015-06-07 21:05:24 【问题描述】:我有一个 iPhone 应用程序,它使用 JSON 形式的 NSData 对象发出发布请求(以下代码供参考)。我正在从 CLLocation 发送 GPS 坐标,但想访问 php 中的各个元素,以便我可以将它们存储在某个数据库中(稍后会这样做)。
由于某种原因,我找不到访问 PHP 中各个字段的方法,我要么得到整个数组,要么什么也没有。
Objective-C 代码供参考:
NSDictionary *locationDic = [[NSDictionary alloc] initWithObjectsAndKeys:
[NSNumber numberWithDouble:location.coordinate.latitude], @"lat",
[NSNumber numberWithDouble:location.coordinate.longitude], @"long",
[NSNumber numberWithDouble:location.speed], @"speed",
nil];
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:locationDic
options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
error:&error];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://localhost/location.php"]];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request addValue:@"postValues" forHTTPHeaderField:@"HTTP_METHOD"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:jsonData];
PHP:
$handle = fopen("php://input", "rb");
$http_raw_post_data = '';
while (!feof($handle))
$http_raw_post_data .= fread($handle, 8192);
fclose($handle);
$post_data = json_decode($http_raw_post_data,true);
if (is_array($post_data))
$response = array("status" => "ok", "code" => 0, "original request" => $post_data);
else
$response = array("status" => "error", "code" => -1, "original_request" => $post_data);
$processed = json_encode($response);
echo $processed;
echo $processed[0];
知道我在这里可能缺少什么吗?
【问题讨论】:
【参考方案1】:我得到的payload比你更简单:
$content = file_get_contents('php://input');
$ary = json_decode($content , true);
只要 JSON 格式正确,就会得到一个关联数组。
【讨论】:
谢谢,这更干净了。虽然对我的问题没有帮助......:(卡住无法解析数组...... @moshikafya 你能在问题正文中添加 $http_raw_post_data 的回声吗? 我正在使用你的代码,所以没有'http_raw_post_data'了:)以上是关于访问从 iPhone 应用程序发送的 PHP 中的数组对象的主要内容,如果未能解决你的问题,请参考以下文章
我的 iphone 应用程序如何将数据发送到服务器的 php 文件?
iPhone- 在 POST 中将 JSON 对象发送到 PHP 服务器并从服务器获取响应
无法使用 iphone 中的默认 Twitter 将数据从应用程序发送到 twiiter
将 PHP 调用的 .exe 程序(作为单独的进程,而不是在 PHP 中运行)的输出发送回 iPhone 客户端的可能方法