Ios 请求在远程服务器上总是失败

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

我正在为我的iOS应用程序使用ASIHTTPRequest。我必须通过PHPAPI连接到数据库(复制如下)。以下是我使用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";
 }



?>

您的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参数,并且应该可以工作。