我正在为我的 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 时,一切正常。但是当我通过远程服务器执行此操作时,我的请求总是失败,没有消息。
这是我用 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 而不是我的远程服务器上工作。如果我将 API 与http://myURL/iOS/objc.php?getWines=1之类的浏览器一起使用,那就完美了!
感谢您的帮助。
PS我已经找到了一篇关于对代码进行一些更改的帖子(将@sythesis更改为手写的getter / setter,但仍然无法正常工作)