Alamofire无法识别POST方法以及参数

时间:2016-05-11 06:29:12

标签: xcode alamofire

我在iOS 9中使用Alamofire,并注意到Alamofire没有在POST方法中将参数发送到我的PHP脚本。

这是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请求时,我收到消息:

  

swift:55 fetchData(_:completionHandler :):仅   支持POST。你发了:GE​​T

最后,这是我的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 [“param”]

我做错了什么?

感谢。

编辑:

仍然为此疯狂。安装了查尔斯,检查我的电脑发出的请求是什么,然后就是这样:

enter image description here

编辑2:

将Alamofire请求编码更改为JSON:

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

现在我可以看到GET和POST请求。邮政要求:

  

网址http://example.com/backend/names/query_names.php   状态完成响应代码301永久移动

1 个答案:

答案 0 :(得分:1)

终于找到了问题所在。

我的请求网址已设为http://server.com/api

当我将其更改为http://www.server.com/api

这让它运转了。我不知道为什么会发生这种情况,如果这与.httpaccess有关,那就是它。