json - 使用 alamofire 将带有 JSON 对象和查询参数的 POST 请求发送到 REST web 服务

标签 json swift post alamofire

我正在尝试使用 alamofire 向 REST 网络服务发送 POST 请求

我将 json 对象作为 POST 正文传递,我收到了响应,到目前为止一切正常

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!
        }

我该怎么做?希望我能解释清楚

提前致谢

最佳答案

你可以这样解决:

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 本身会将 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)

关于json - 使用 alamofire 将带有 JSON 对象和查询参数的 POST 请求发送到 REST web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34285392/

相关文章:

javascript - Json 从服务器到 html 表

python - 使用 Python 指定 JSON 对象中的键

swift - 编码的字符串在 swift 中不起作用

java - REST POST Api 是否会像 Get Api 一样由浏览器自动重试?

linux - 我如何在 Twisted 中处理 POST 请求?

php - 是否可以使用 php 向另一台服务器发出请求并获得其响应?

java - 有没有办法在 Java 中只读取 JSON 文件的一部分?

java - 我无法在应用程序中读取 JSON

ios - 在 iOS 10 中使用 WKWebView

ios - 当 View 位于 SwiftUI 中的 TabView 中时,NavigationView 标题不会出现