发布数据以从IOS中的SQL Query检索信息

时间:2014-07-03 17:14:05

标签: php ios sql iphone ios7

我是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但没有运气。有什么建议?请帮忙!谢谢!

1 个答案:

答案 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