Ios 请求在远程服务器上总是失败
我正在为我的iOS应用程序使用ASIHTTPRequest。我必须通过PHPAPI连接到数据库(复制如下)。以下是我使用ASIHTTPRequest执行请求的函数:Ios 请求在远程服务器上总是失败,ios,web-services,asihttprequest,Ios,Web Services,Asihttprequest,我正在为我的iOS应用程序使用ASIHTTPRequest。我必须通过PHPAPI连接到数据库(复制如下)。以下是我使用ASIHTTPRequest执行请求的函数: -(void)startRequest { NSURL *url = [NSURL URLWithString:PHP_SCRIPT]; ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; [request setDel
-(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";
}
?>
您的API看起来期望的是GET请求而不是POST。使用包含整个URL的NSString创建URL,不要设置任何POST属性
此外,您可能希望开始检查ASI的替代品。它目前尚未开发,可能永远不会符合ARC标准。我切换到AFNetworking并喜欢它。如果我使用$\u POST,它为什么要等待GET请求?(我不是很擅长PHP,如果这个问题看起来有点“newbe”,很抱歉。我曾尝试使用AFNNetworking和NSURLRequest,但ASIHTTPRequest看起来更容易使用。我的意思是,如果我使用$\u request,您指定的URL()需要传入一个GET参数(getWines)。任何时候,当您在URL的一组传入参数的开头看到问号时,这就是GET请求。此外,一旦您对使用块有了深刻的认识,AFNetworking的使用和共享就会简单得多。好的,谢谢您的解释,但我想知道为什么我的localhost API会有结果,而远程服务却没有结果呃?我不知道。底线是,如果你可以在浏览器中访问该URL并获得返回,那么你应该能够在请求中使用完全相同的URL,并且不添加任何POST参数,并且应该可以工作。