0

我在这个函数中向网络服务器发送请求:

-(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 做点什么。我觉得我的要求反应不好。但我有responceStatusCode 200。有人可以帮我吗?我没发现有什么问题。谢谢

4

1 回答 1

0

我需要详细信息来告诉您需要调整哪些服务器设置。我的下一个最佳建议 - 逐行调试。例如在 php 文件中,执行以下操作:

$serial_number = $this->getString('serial_number', 64); //there I get serial_number from $_POST["serial_number"];
echo $serial_number; die;
// ...

此时,如果您再次运行您的应用程序,您应该会看到 -(void)requestFinished:(ASIHTTPRequest *)request 中打印的序列号,如果此处没有任何问题。如果你看到它,移除回声并死掉,继续前进

//...
$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);
print_r($states); die;
// ...

如果那里没有响应,这可能意味着您的 php.ini 中没有安装PDO 驱动程序

如果下一行sendResponse(200, json_encode($result));打破了它,那么我的猜测是你的 php 安装缺少 json 模块。

于 2013-05-16T14:29:28.740 回答