Я попытался установить Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders
с помощью собственных HTTP-заголовков в iOS 7, но мне не повезло.
Это отлично работает в iOS 8.
Есть ли у кого-нибудь предложения?
Я попытался установить Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders
с помощью собственных HTTP-заголовков в iOS 7, но мне не повезло.
Это отлично работает в iOS 8.
Есть ли у кого-нибудь предложения?
Я заработал.
Это не влияет на iOS7:
Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders = ["CustomHeader": customValue]
Это, однако, будет работать как на iOS7, так и на 8:
var headers = Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders ?? [:]
headers["CustomHeader"] = customValue
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.HTTPAdditionalHeaders = headers
Alamofire
.Manager(configuration: configuration)
.request(.GET, "https://example.com/api/users", parameters: nil, encoding: .JSON)
Я застреваю с той же проблемой, в конце я придумываю волчий раствор. (Я немного изменил исходную библиотеку, поэтому будьте осторожны!)
Я всегда вызывал метод:
public func request(method: Method, URLString: URLStringConvertible, parameters: [String: AnyObject]? = nil, encoding: ParameterEncoding = .URL) -> Request
И я заметил вызов метода:
private func URLRequest(method: Method, URL: URLStringConvertible) -> NSURLRequest
Внутри этой функции я вставил одну строку кода:
mutableURLRequest.setValue(valueHeader, forHTTPHeaderField: keyHeader)
со следующим результатом (просто чтобы быть понятным):
private func URLRequest(method: Method, URL: URLStringConvertible) -> NSURLRequest {
let mutableURLRequest = NSMutableURLRequest(URL: NSURL(string: URL.URLString)!)
mutableURLRequest.HTTPMethod = method.rawValue
if(contentHeader){
mutableURLRequest.setValue(valueHeader, forHTTPHeaderField: keyHeader!)
}
return mutableURLRequest
}
Я создал также метод для передачи значений. Надеюсь, это сработает.
Я использую NSMutableURLRequest для установки пользовательских заголовков.
Проверьте этот пример.
var request = NSMutableURLRequest(URL: NSURL(string: "http://example.com")!)
request.HTTPMethod = "POST"
request.setValue("<HEADER VALUE>", forHTTPHeaderField: "<HEADER FIELD>")
var parameter: NSDictionary = ["dimensions" :["product" : ["name" : "macpro", "price" : "350"]]]
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(parameter, options: nil, error: nil)
Alamofire.request(request).response { (request, response, result, error) -> Void in
// handle response
println("\(request) \t \(response) \t \(result) \t \(error) ")
}
Ниже приведен полный код, который работает для iOS 7 и iOS 8
let URL = NSURL(string: request.url!)
var mutableURLRequest = NSMutableURLRequest(URL: URL!)
mutableURLRequest.HTTPMethod = Alamofire.Method.GET.rawValue
// Adding headers
var defaultHeaders = Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders ?? [:]
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.HTTPAdditionalHeaders = defaultHeaders
// Adding parameters
let manager = Alamofire.Manager(configuration: configuration)
let urlReq = ParameterEncoding.URL.encode(mutableURLRequest, parameters: request.params).0
aReq = manager.request(urlReq)
aReq!.responseJSON { (req, response, JSON, error) in }
Дополнительная информация: Alamofire Issues - GitHub