我刚到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,但没有运气。有什么建议吗?请帮助!谢谢你!
在GitHub上尝试JWURLConnection。如果您喜欢编写自己的代码,可以查看源代码。
EDIT为您提供更多信息:您正在代码中创建一个纯HTTP请求。你发送的HTTP正文绝对是而不是 HTTP兼容的。x-www-form-urlencoded
内容类型必须遵循RFC定义的非常具体的规则。
当我再次查看你的代码时,我发现了一个问题。您缺少一个等号:
[NSString stringWithFormat:@"%@=%@",@"ID",newsID]
^^^
我建议阅读RFC规范,或者,如前所述,遵循在上述类中实现的代码,它严格遵循规则。
如果你不能使用这个类来修复这个问题,那么你可能在PHP脚本中有一个问题,所以你必须提供更多关于脚本的信息。
编辑二
当我再次查看你的代码时,我发现了另一个问题。您没有正确设置请求方法。这里设置
[request setHTTPMethod:@"REQUEST"];
不是一个有效的HTTP方法!如果您想要post,则必须将其设置为@"POST"
,或者对于get @"GET"
,对于head @"HEAD"
等等,请参见RFC 2616。