iOS – Alamofire v2 Basic Auth no funciona

Así que estoy enviando una request de authentication básica a la búsqueda de imágenes de Bing para capturar algunos datos de image, y funcionaba muy bien, hasta que actualicé la última versión de Alamofire (1.3 -> 2.0.2), lo que tuve que hacer porque 1.3 no era ni siquiera cercano a compatible con XCode 7.

De todos modos, aquí está mi código:

let cnetworkingentials = ":\(Settings.bingApiKey)" let plainText = cnetworkingentials.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) let base64 = plainText!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0)) manager = Alamofire.Manager.shanetworkingInstance manager!.session.configuration.HTTPAdditionalHeaders = [ "Authorization": "Basic \(base64)" ] let url = NSURL(string: Settings.bingImageApi + "&Query=" + keyword + "&$top=15&$skip=" + String(skip))! manager! .request(.POST, url, parameters: nil, encoding: .JSON) .responseJSON { request, response, result in ... 

Y me sale el error:

FALLO: Error Domain = NSCocoaErrorDomain Code = 3840 "Valor no válido alnetworkingedor del carácter 0." UserInfo = {NSDebugDescription = Valor no válido alnetworkingedor del carácter 0.} El tipo de autorización que proporcionó no es compatible. Solo son compatibles Basic y OAuth.

Tuve el mismo problema al pasar de Alamofire 1.x a 2.x.

Una solución que encontré (y que funciona) es pasar los encabezados al realizar la request:

 let headers = ["Authorization": "Basic \(base64)"] Alamofire.request(.POST, url, parameters: nil, encoding: .JSON, headers: headers) 

Para get más información, puede consultar la documentation .

lea aquí http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/ "App Transport Security (ATS) le permite a una aplicación agregar una statement a su Archivo Info.plist que especifica los dominios con los que necesita comunicación segura. ATS evita la divulgación accidental, proporciona un comportamiento pnetworkingeterminado y seguro, y es fácil de adoptar. Debe adoptar ATS lo antes posible, independientemente de si está creando una aplicación nueva o actualizando uno existente ".

La primera parte del error se debe a que no recibiste JSON válido en la respuesta. Puede usar response , responseData o responseString para ayudar a depurar.

La segunda parte del error se debe a cómo está configurando el encabezado. No puede establecer un encabezado de Authorization después de que se haya creado la configuration de session. Puede crear su propia configuration de session y su propio Manager , o puede pasar el encabezado de Authorization en la request .