Post数据来检索IOS中的SQL查询信息


Post data to retrieve information from SQL Query in IOS

我刚到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。