【问题标题】:Alamofire not recognizing POST method and also the parametersAlamofire 无法识别 POST 方法和参数
【发布时间】:2016-09-06 09:11:27
【问题描述】:

我在 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。您发送: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["param"]

的简单服务

我做错了什么?

谢谢。

编辑:

仍然为之疯狂。安装 Charles 来检查我的 PC 发出的请求是什么,结果如下:

编辑 2:

将 Alamofire 请求编码更改为 JSON:

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

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

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

【问题讨论】:

  • 另一个评论是我注释掉了对 REQUEST_METHOD 的检查,然后它在第二个条件下失败,检查 _POST 参数的存在。这当然是意料之中的。我认为 Alamofire 也将我的参数发送为 _GET

标签: xcode alamofire


【解决方案1】:

终于找到问题所在了。

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

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

这让它工作了。老实说,我不知道为什么会发生这种情况,以及这是否与 .httpaccess 有关,但就是这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 2013-08-09
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多