iOS アプリケーションに ASIHTTPRequest を使用しています。PHP API (以下にコピー) を介してデータベースに接続する必要があります。ASIHTTPRequest でリクエストを行う関数は次のとおりです。
-(void)startRequest {
NSURL *url = [NSURL URLWithString:PHP_SCRIPT];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setDelegate:self];
[request setStringEncoding:NSUTF8StringEncoding];
[request setTimeOutSeconds:50];
[request setPostValue:@"1" forKey:@"getWines"];
[request startAsynchronous];
}
MAMP を使用して API でホストされている localy を実行すると、すべて正常に動作します。しかし、遠く離れたサーバーでそれを行うと、リクエストは常に失敗し、メッセージは表示されません。
これは、PHP で記述された API で、遠く離れたサーバーでホストされています。
<?php
function connectToDB(){
$connexion = mysqli_connect(HOST, USER, PASSWORD, DATABASE);
return $connexion;
}
function getWines($connexion) {
$req = "SELECT name, category FROM table WHERE prize_50 != 0 OR
prize_75 != 0 OR
prize_150 != 0 OR
prize_300 != 0";
$res = mysqli_query($connexion, $req);
echo '[';
while($current = mysqli_fetch_assoc($res)) {
extract($current);
echo json_encode($current);
}
echo ']';
}
function getWine($connexion) {
$name = $_REQUEST["name"];
$req = "SELECT * FROM table WHERE name='".$name."'";
$res = mysqli_query($connexion, $req);
echo "[";
echo json_encode(mysqli_fetch_assoc($res));
echo "]";
}
$connexion = connectToDB();
if($connexion) {
echo "connected";
if(isset($_REQUEST["getWine"])) {
getWine($connexion);
}
else if(isset($_REQUEST["getWines"])) {
getWines($connexion);
}
}
else {
echo "unable to connect to the database";
}
?>
何が起こったのか、そしてなぜそれが私の遠隔サーバーではなく localHost で機能するのかわかりません。http://myURL/iOS/objc.php?getWines=1のようなブラウザーで API を使用すると、完全に機能します。
助けてくれてありがとう。
PS私はすでにコードにいくつかの変更を加えることに関する投稿を見つけました(手書きのゲッター/セッターの@sythesisを変更しますが、まだ機能していません)