[swift]向其他 web 服务使用 alamofire 发送 POST 请求与 JSON 对象和查询参数

标签: json Alamofire Swift
发布时间: 2017/3/5 16:29:45
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图向其他 web 服务使用 alamofire 发送 POST 请求

我通过 json 对象作为邮政机构,和我得到的响应,到目前为止,一切工作正常

Alamofire.request(.POST, path, parameters: createQueryParams(), encoding: .JSON)
            .responseArray { (request, response, myWrapper, error) in
                if let anError = error
                {
                    completionHandler(nil, error)
                    println("Error in handling request or response!")
                    return
                }
                completionHandler(myWrapper, nil)
        }

private class func createQueryParams() -> [String:AnyObject]{
        var parameters:[String:AnyObject] = [String:AnyObject]()
        parameters["lat"] = lLat!
        parameters["lng"] = lLon!

        if category != nil { // here is the problem
            parameters["category"] = category!
        }

        return parameters
    }

类别筛选器中,如果类别变量中,是有价值,我想不想将其作为发送 QueryParam (编码应。URL?但如何可以发送 json 对象??)

此代码不能工作

if category != nil {
            parameters["category"] = category!
        }

怎么可以这样?希望我能解释清楚

在此先感谢

解决方法 1:

你能解决它这种方式︰

let mutableUrlRequest = NSMutableUrlRequest(URL: URL.URLByAppendingPathComponent(path)
mutableUrlRequest.HTTPMethod = .POST
let request = Alamofire.ParameterEncoding.URL.encode(mutableUrlRequest, parameters: createQueryParameters()).0

Alamofire.request(request)

然而,我建议你看看 Alamofire 的路由器声明并试穿这一件。您可以使用它创建动态请求和他们都在单个文件中声明。

编辑︰
哦等待你可以忘记以前的编辑解决方案非常简单,你也对此的回答自己。是的你只需要改变向的编码。URL,你仍是能够发送 json 对象,因为 Alamofire 本身然后解码为字符串,以便 queryparams 的 json 对象。

Alamofire.request(.POST, path, parameters:createQueryParams(), encoding: .URL).responseArray...

编辑 2:
因为第一次编辑没有工作,那么试试这个︰

let url = NSURL(string: path)!
let urlRequest = NSURLReqeust(URL: url)
request.HTTPMethod = "Post"
let encoding = Alamofire.ParameterEncoding.URL
let request = encoding.encode(urlRequest, createQueryParams())
Alamofire.request(request)
官方微信
官方QQ群
31647020