使用ASIFormDataRequest发送json到php[英] Send json to php using ASIFormDataRequest

本文是小编为大家收集整理的关于使用ASIFormDataRequest发送json到php的处理方法,想解了使用ASIFormDataRequest发送json到php的问题怎么解决?使用ASIFormDataRequest发送json到php问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我是 iPhone 的新手,我正在尝试将 NSMutable 数组转换为 json 字符串,然后使用请求将此字符串发送到 php 文件,然后使用响应 NSLog 再次打印它以确保它已成功发送.于是我在viewDidLoad中写了如下代码

NSString *phpUrl = @"http://dt-works.com/eman/bookMarks.php";

NSMutableArray *arrayKey = [[NSMutableArray alloc] initWithObjects:@"one", @"two", @"three", nil];
NSMutableArray *arrayValue1 = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3", nil]; 
NSMutableArray *arrayValue2 = [[NSMutableArray alloc] initWithObjects:@"11", @"22", @"33", nil]; 

NSDictionary *theReqDictionary1 = [NSDictionary dictionaryWithObjects:arrayValue1 forKeys:arrayKey];
NSDictionary *theReqDictionary2 = [NSDictionary dictionaryWithObjects:arrayValue2 forKeys:arrayKey];

NSMutableArray *myArray = [NSMutableArray arrayWithObjects:theReqDictionary1,theReqDictionary2, nil];

NSString *jsonString = [myArray JSONRepresentation];

NSLog(@"%@", jsonString);



 NSDictionary *questions = nil;
NSURL *link = [NSURL URLWithString:[phpUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:link];
[request setPostValue:jsonString forKey:@"jsonString"];
[request setTimeOutSeconds:120];
[request setDelegate:self];
NSError *error = [request2 error];
[request2 startSynchronous];

if (!error) { 
    NSData *response = [request responseData];
    NSString *json = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
    questions = [json objectFromJSONString];
    NSLog(@"Data: %@", questions);

} 

bookMarks.php 中的代码是:

$handle = fopen('php://input','r');
$jsonInput = $_POST['jsonString'];
print_r($jsonInput);

但它给了我:

[{"one":"1","two":"2","three":"3"},{"one":"11","two":"22","three":"33"}]
Data: (null)

我希望数据为: [{"one":"1","two":"2","three":"3"},{"one":"11","two":"22","三":"33"}]这个怎么办??

推荐答案

试试这个,你需要将它作为数据发布到你的脚本中,而不是用一个键发布 JSON 字符串.目前在你的脚本中你甚至没有使用 $handle 来做任何事情......

NSURL *link = [NSURL URLWithString:[phpUrl     stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:link];
[request appendPostData:[jsonString  dataUsingEncoding:NSUTF8StringEncoding]]; 
[request setTimeOutSeconds:120];
[request setDelegate:self];

还有你的 php 代码..

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

本文地址:https://www.itbaoku.cn/post/924641.html