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 にPDO ドライバーがインストールされていない可能性があります。

次の行がsendResponse(200, json_encode($result));壊れている場合、私の推測では、php インストールに json モジュールがありません。

于 2013-05-16T14:29:28.740 に答える