2014-11-06 7 views

risposta

7

Ho funzionato.

Ciò non ha alcun effetto sulla iOS7:

Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders = ["CustomHeader": customValue] 

Questo però funziona su entrambi 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) 
1

mi si blocca con lo stesso problema, alla fine vengo con la soluzione wolfing. (I cambiato un po 'l'origine biblioteca, così fate attenzione!)

ero sempre chiamando il metodo:

public func request(method: Method, URLString: URLStringConvertible, parameters: [String: AnyObject]? = nil, encoding: ParameterEncoding = .URL) -> Request 

E ho notato la chiamata al metodo:

private func URLRequest(method: Method, URL: URLStringConvertible) -> NSURLRequest 

Appena dentro questa funzione ho inserito una riga di codice:

mutableURLRequest.setValue(valueHeader, forHTTPHeaderField: keyHeader) 

con il seguente risultato (solo per essere chiari):

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 
} 

Ho creato anche un metodo per passare i valori. Spero che questo funzionerà

1

Sto usando il NSMutableURLRequest per impostare intestazioni personalizzate.

Controllare questo esempio.

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) ") 
} 
-1

Di seguito si riporta il codice completo che funziona per iOS 7 e 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 } 

Maggiori informazioni: Alamofire Issues - GitHub