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
.