【发布时间】:2013-05-15 12:40:03
【问题描述】:
我在这个函数中向网络服务器发送请求:
-(void)getData
{
NSURL *url = [NSURL URLWithString:@"http://10.10.10.10/application.php"]; //some address
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
request.delegate = self;
[request setPostValue:@"6577098" forKey:@"serial_number"];
[request startAsynchronous];
}
然后在 application.php 中的服务器部分:
<?php
//$serial_number from $_POST["serial_number"];
$serial_number = $this->getString('serial_number', 64);
$stmt = $this->pdo->prepare('SELECT S.DateTime, SN.Name FROM States S LEFT JOIN StateNames SN on SN.ID=S.State_ID WHERE S.SerialNumber = ?');
$stmt->execute(array($serial_number));
$states = $stmt->fetchAll(PDO::FETCH_ASSOC);
$result = array();
foreach ($states as $state)
{
$result[] = $state;
}
sendResponse(200, json_encode($result));
?>
当我从浏览器尝试时,这部分有效,它有效,我得到了这个:
[{"DateTime":"2013-05-15 10:22:11","Name":"No water"},{"DateTime":"2013-05-13 14:55:31","Name":"Water"}]
然后回到Xcode中处理:
-(void)requestFinished:(ASIHTTPRequest *)request
{
if (request.responseStatusCode == 200)
{
NSString *responseString = [request responseString];
NSLog(@"%@",responseString); //if I try this nothing happened
}
}
我想我必须对 JSON 做点什么。 我觉得我的要求反应不好。但我有 responseStatusCode 200。 谁能帮我?我没发现有什么问题。 谢谢
【问题讨论】:
-
您确定您的服务器代码响应 POST 请求以及 GET 请求吗?
-
是的,我确定。如果不是,则无法返回 responseStatusCode 200。我尝试更改或删除该 POST 值 serial_number,如果错误,则返回状态码 400。应该是正确的。
-
从您的帖子和 cmets 我仍然无法理解这是服务器/php 问题还是 app/objective-c 问题。你能从服务器获取任何页面的内容吗?
-
嗯,我需要从服务器上的 mysql 获取数据,我使用 php。我想通过 ASIHTTPRequest 使用参数 serial_number 将它发送到该服务器,并且该 sql 选择的结果应该是该请求的响应。就像这里raywenderlich.com/2965/… 但它不起作用。 :(
-
只需将此代码放在您的 php 文件的顶部:
ini_set('display_errors', 1); ini_set('error_reporting', E_ALL);,如果您在服务器上有错误详细信息,您应该能够看到它们
标签: ios json asihttprequest