从 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);
确保记录result
和dict
以确保其正常并尝试检查错误。
【讨论】:
【参考方案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 数据的主要内容,如果未能解决你的问题,请参考以下文章
POST JSON 数据从 iOS 到 mssql 服务器 [关闭]
PHP:如何从 JSON 中获取变量(从 Swift iOS 应用程序发送)并以 JSON 响应