如何在我的Xcode应用程序中使用PHP从MySql获取数据?

时间:2014-08-27 04:29:37

标签: php json xcode

我使用下面的代码根据用户输入使用PHP文件从MySql中检索数据,当输入为英文时,每个东西都很好,但当输入是阿拉伯语时,Xcode显示错误并终止应用程序:

Xcode中:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; //create instance of NSUSerDefaults
NSString *qasidaName = [defaults objectForKey:@"qasidaName"];
self.lbOne.text = qasidaName;


NSString *post =[[NSString alloc] initWithFormat:@"mytitle=%@",[self.lbOne text]];
NSLog(@"PostData: %@",post);
NSURL *url=[NSURL URLWithString:@"http:/MyDomain.com/checkphp.php"];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];

[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];


NSError *error = [[NSError alloc] init];
NSHTTPURLResponse *response = nil;
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"Response code: %ld", (long)[response statusCode]);



if ([response statusCode] >= 200 && [response statusCode] < 300){
NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
NSLog(@"Response ==> %@", responseData);
NSString *url = [NSString stringWithFormat:@"http:/MyDomain.com/checkphp.php?title=%@",[self.lbOne text]];
NSURL *jsonUrl =[NSURL URLWithString:url];
NSData *data = [NSData dataWithContentsOfURL:jsonUrl];
jasonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
listArray = [[NSMutableArray alloc]init];

for (int i = 0; i < jasonArray.count; i++) {
NSString *cUserName = [[jasonArray objectAtIndex:i]objectForKey:@"userName"];
NSString *cTitle = [[jasonArray objectAtIndex:i]objectForKey:@"title"];
NSString *cComments = [[jasonArray objectAtIndex:i]objectForKey:@"comments"];
NSString *cTimeC = [[jasonArray objectAtIndex:i]objectForKey:@"commentsTime"];
NSString *cDateC = [[jasonArray objectAtIndex:i]objectForKey:@"commentsDate"];

[listArray addObject:[[ListOfObjects alloc]initWithUserName:cUserName andTitle:cTitle andComments:cComments andtimeC:cTimeC andDateC:cDateC]];
}

[self.tableView reloadData];

}

任何人都可以告诉我在代码中需要更改哪些内容?

1 个答案:

答案 0 :(得分:0)

在阿拉伯语案例中,您可以将JSON_UNESCAPED_UNICODE用于默认行为,例如

echo json_encode($yourdata, JSON_UNESCAPED_UNICODE);

也可以使用charset=utf-8阅读this

尝试在NSArray中获取响应,然后使用JSON转换它或查看可能对您有所帮助的video tutorial