通过POST方法的Alamofire NSURLRequest不起作用

时间:2016-05-27 12:44:02

标签: ios swift alamofire nsurlrequest

我是swift和iOS的新手,并尝试使用Alamofire和路由器,它们返回NSMutableURLRequest,但我的代码不起作用。
所以我刚做了一个NSURLRequest进行测试,并要求它但结果是一样的。 这是我的代码。我目前正在使用Alamofire和SwiftyJSON。

let params = ["Id": "1234567", "Token": "something"]
    let url = NSURL(string: "myurl")
    var request = NSMutableURLRequest(URL: url!)
    request.HTTPMethod = Alamofire.Method.POST.rawValue
    let encoding = Alamofire.ParameterEncoding.JSON
    (request, _) = encoding.encode(request, parameters: params)

Alamofire.request(request)
        .validate()
        .responseJSON { response in
            switch response.result {
            case .Success:
                if let value = response.result.value {
                    let json = JSON(value)
                    let token = json["token"].stringValue
                    let error = json["error"].stringValue
                    print("token : \(token), error : \(error)")
                }
            case .Failure(let error):
                // TODO:
                print(error)
            }
    }

上面的代码发送没有参数的请求 。我的代码有错误吗?

1 个答案:

答案 0 :(得分:0)

我检查了你的代码,在执行编码功能之前你的request.HTTPBody是空的,但是在它有一些数据之后

Optional<NSData> - Some:<7b22546f 6b656e22 3a22736f 6d657468 696e6722 2c224964 223a2231 32333435 3637227d>

当我在print(response.request?.HTTPBody)块中调用Alamofire response时,我将参数作为NSData获取,HTTPBody包含与发送请求之前相同的数据,因此它可以正常工作。

还尝试将响应从 responseJSON 更改为 responseString ,因为如果您的响应无法解析为JSON,则会出现失败。

如果您获得正确的数据,我认为您应该检查您的网址。

我使用

而不是你的解决方案

Alamofire.request(method, url, parameters: parameters, encoding: .JSON) .responseString{ response in}

相同但更短,一切都是参数。