2016-05-11 61 views
0

我在iOS 9中使用Alamofire,并且注意到Alamofire未在POST方法中将参数发送到我的PHP脚本。Alamofire无法识别POST方法以及参数

这是PHP脚本:

if($_SERVER['REQUEST_METHOD'] != 'POST') { 
    echo '{"status": "error", "message" : "Only POST supported. You sent: '.$_SERVER['REQUEST_METHOD'].'"}'; 
    return; 
} 

if (!isset($_POST['GENDER']) || !isset($_POST['CHAR_COUNT_LOWER']) || !isset($_POST['CHAR_COUNT_UPPER'])) { 
    echo '{"status": "error", "message" : "Minimum parameters not set."}'; 
    return; 
} 

然后,烧成我Alamofire POST请求时,我得到的消息:

迅速:55 fetchData(_:completionHandler :):只有 POST支持。您发送:GET

最后,这是我的Alamofire要求:

Alamofire.request(.POST, url, parameters: ["CHAR_COUNT_LOWER":String(lowerValue), "CHAR_COUNT_UPPER":String(upperValue), "GENDER": String(gender!)]) 
      .validate() 
      .responseJSON { response in 
       QL1(response.description) 
       switch response.result { 
       case .Success: 
        var result = [BabyNames]() 
        let json = JSON(data: response.data!) 
        if json["status"] == "error" { 
         QL4(json["message"]) 
         completionHandler(babyNames: [], error: StoreError.CannotFetch("Could not retrieve baby names")) 
         return 
        } 
....... 

我也试图改变编码一切,但JSON,因为我的服务不采取JSON作为输入。 这是一个简单的服务,读取$ _POST [“参数”]

我做错了什么?

谢谢。

编辑:

仍然会疯狂的。安装查尔斯检查什么是走出我的电脑的要求,这里有云:

enter image description here

编辑2:

更改Alamofire请求编码到JSON:

Alamofire.request(.POST, url, parameters: parameters!, encoding: ParameterEncoding.JSON) 

现在我可以看到一个GET和一个POST请求。 POST请求:

URL http://example.com/backend/names/query_names.php 状态完成二维码301永久移动

+0

另一个评论是,我注释了REQUEST_METHOD上的检查,然后在第二个条件失败,检查是否存在_POST参数。当然这是预料之中的。我会认为Alamofire也发送我的参数_GET –

+0

Alamofire 3.4 btw –

回答

1

终于找到了问题所在。

我的请求URL设置为http://server.com/api

当我把它改成http://www.server.com/api

这引起了它的工作。我不知道为什么会发生这种情况,如果这与.httpccess有关,但就是这样。