gpt4 book ai didi

ios - Alamofire 接受和内容类型 JSON

转载 作者:IT王子 更新时间:2023-10-29 05:29:24 25 4
gpt4 key购买 nike

我正在尝试在 Swift 中使用 Alamofire 发出 GET 请求。我需要设置以下 header :

Content-Type: application/json
Accept: application/json

我可以绕过它并直接指定请求的 header ,但我想按照库中的建议使用 ParameterEncoding 来完成。到目前为止我有这个:

Alamofire.request(.GET, url, encoding: .JSON)
.validate()
.responseJSON { (req, res, json, error) in
if (error != nil) {
NSLog("Error: \(error)")
println(req)
println(res)
} else {
NSLog("Success: \(url)")
var json = JSON(json!)
}
}

Content-Type 已设置,但未设置Accept。我怎样才能正确地做到这一点?

最佳答案

我最终使用了 URLRequestConvertible https://github.com/Alamofire/Alamofire#urlrequestconvertible

enum Router: URLRequestConvertible {
static let baseUrlString = "someUrl"

case Get(url: String)

var URLRequest: NSMutableURLRequest {
let path: String = {
switch self {
case .Get(let url):
return "/\(url)"
}
}()

let URL = NSURL(string: Router.baseUrlString)!
let URLRequest = NSMutableURLRequest(URL:
URL.URLByAppendingPathComponent(path))

// set header fields
URLRequest.setValue("application/json",
forHTTPHeaderField: "Content-Type")
URLRequest.setValue("application/json",
forHTTPHeaderField: "Accept")

return URLRequest.0
}
}

然后就是:

Alamofire.request(Router.Get(url: ""))
.validate()
.responseJSON { (req, res, json, error) in
if (error != nil) {
NSLog("Error: \(error)")
println(req)
println(res)
} else {
NSLog("Success")
var json = JSON(json!)
NSLog("\(json)")
}
}

另一种方法是为整个 session 指定它,查看上面@David 的评论:

Alamofire.Manager.sharedInstance.session.configuration
.HTTPAdditionalHeaders?.updateValue("application/json",
forKey: "Accept")

关于ios - Alamofire 接受和内容类型 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28374483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com