从 iOS 到 php 的 JSON 数据

Posted

技术标签:

【中文标题】从 iOS 到 php 的 JSON 数据【英文标题】:JSON data from iOS to php 【发布时间】:2014-11-12 05:30:33 【问题描述】:

我想将 json 数据从 ios 发送到 php。我的 ios 代码如下:

 NSURLResponse *response = nil;
    NSError *error = nil;

    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"ishu", @"123", @"hari", @"135", nil];
    NSData *result =[NSJSONSerialization dataWithJSONObject:dict options:0 error:&error];
    NSURL *url = [NSURL URLWithString:@"http://192.168.1.4:8888/iostomysql11.php"];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
    [request setHTTPMethod:@"POST"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [request setValue:[NSString stringWithFormat:@"%d",result.length] forHTTPHeaderField:@"Content-Length"];
    [request setHTTPBody:result];

     NSData *result1 = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

我的php代码如下:

<?php 
$handle = fopen('php://input','r');
$jsonInput = fgets($handle);
$decoded = json_decode($jsonInput,true);
var_dump($jsonInput);
?>

但我得到了这样的输出。bool(false).我不太了解 php。我的代码有什么问题?请帮助我。

【问题讨论】:

【参考方案1】:

您可以执行以下操作:

$json= file_get_content('php://input');
$decoded = json_decode($json,true);
var_dump($jsonInput);

确保记录resultdict 以确保其正常并尝试检查错误。

【讨论】:

【参考方案2】:

您可以使用此代码:

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

【讨论】:

【参考方案3】:

我已经成功完成了同样的任务:

以下是我的代码。希望对你有帮助

NSURL *url = [NSURL URLWithString:m_url];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
[req setHTTPMethod:@"POST"];
[req addValue:@"getModule" forHTTPHeaderField:@"METHOD"];

NSMutableDictionary *dicCredentials=[[NSMutableDictionary alloc]init];
[dicCredentials setValue:userid forKey:@"user_id"];
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
[dictionary setValue:@"user" forKey:@"moduleName"];
[dictionary setValue:@"getFavourite" forKey:@"methodName"];
[dictionary setValue:dicCredentials forKey:@"data"];
NSLog(@"Sent data : %@",dictionary);

//      serialize the dictionary data as json
NSError *error = nil;

NSData *result = [NSJSONSerialization dataWithJSONObject:[dictionary copy] options:kNilOptions error:&error];
if(error)
    NSLog(@"%@",error);
else
    [req setHTTPBody:result]; //set the data as the post body


[req addValue:[NSString stringWithFormat:@"%lu",(unsigned long)result.length] forHTTPHeaderField:@"Content-Length"];

conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];
if (conn) 
    webData = [[NSMutableData data]retain];

PHP 代码:

$jsonRequest = file_get_contents('php://input');

$jsonArr = json_decode($jsonRequest, true)

【讨论】:

更正代码中的这一行。它可能会有所帮助。 NSData *result = [NSJSONSerialization dataWithJSONObject:[dictionary copy] options:kNilOptions error:&error];将选项设置为 kNilOptions 而不是 nil。 还要检查您发送到服务的数据格式是否正确。否则将无法在您的服务端对其进行解码。

以上是关于从 iOS 到 php 的 JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 PHP 脚本发送到 iOS

从 php 到 iOS 应用程序的不完整 json 响应

POST JSON 数据从 iOS 到 mssql 服务器 [关闭]

PHP:如何从 JSON 中获取变量(从 Swift iOS 应用程序发送)并以 JSON 响应

通过iOS应用程序将数据从json(php webservice)修改为mysql

将信息从 ios 应用程序保存到 Web 服务器 (POST JSON)