我是IOS的新手,我正试图从Json格式的php文件中获取数据。我想获取此数据的方法是将应用程序中的信息发送到php sql查询。我尝试过以下方法:
IOS:
NSString *myRequestString = [NSString stringWithFormat:@"%@%@",@"ID",newsID];
NSLog(myRequestString);
NSData *myRequestData = [NSData dataWithBytes: [myRequestString UTF8String] length: [myRequestString length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init];
[request setURL:[NSURL URLWithString:@"http://domain.com/file.php"]];
[request setHTTPMethod: @"REQUEST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
[request setHTTPBody: myRequestData];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; //Or async request
NSError *error=nil;
NSArray *results = [NSJSONSerialization JSONObjectWithData:returnData options:0 error:&error];
PHP:
$query="SELECT news_description FROM newsTable WHERE newsID = ".$_REQUEST['ID'].";
$result=mysql_query($query);
while($row=mysql_fetch_assoc($result))
$output[]=$row;
print(json_encode($output));
我已经研究了一些想法但不幸的是它没有将信息发送到php文件。我已经尝试将$ _REQUEST更改为$ _POST,我也在我的php文件中创建了一个变量来存储$ _POST但没有运气。有什么建议?请帮忙!谢谢!
答案 0 :(得分:1)
试试JWURLConnection on GitHub。如果您更喜欢编写自己的代码,可以查看源代码。
编辑为您提供更多信息:您正在代码中创建纯HTTP请求。您发送的HTTP正文绝对不 HTTP兼容。 x-www-form-urlencoded
内容类型必须遵循RFC定义的非常具体的规则。
当我再次查看您的代码时,我看到了一个问题。你错过了一个等号:
[NSString stringWithFormat:@"%@=%@",@"ID",newsID]
^^^
我建议阅读RFC规范,或者如前所述,遵循上述类中实现的代码,严格遵守规则。
如果您无法使用该类解决问题,那么您可能会在PHP脚本中遇到问题,因此您必须提供有关该脚本的更多信息。
编辑II
当我再次查看您的代码时,我可以找到另一个问题。您没有正确设置请求方法。在这里设置
[request setHTTPMethod:@"REQUEST"];
这不是有效的HTTP方法!如果您想要发布,则必须将其设置为@"POST"
或获取@"GET"
,将其设置为@"HEAD"
,依此类推,请参阅RFC 2616。