Alamofire.request(.GET, "url").authenticate(user: "", password: "").responseJSON() {
(request, response, json, error) in
println(error)
println(json)
}
Esta es mi solicitud con Alamofire, para una determinada solicitud a veces funciona, pero a veces obtengo:
Optional(Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Invalid value around character 0.) UserInfo=0x78e74b80 {NSDebugDescription=Invalid value around character 0.})
He leído que esto puede deberse a un JSON no válido, pero la respuesta es una cadena json estática que he validado en el validador JSON como válida. Contiene caracteres å ä ö y algo de HTML.
¿Por qué aparece este error a veces?
responseJSON() { ... }
bloque y reemplazarlo con.responseString { _, _, s, _ in println(s) }
. Eso le permite ver el json que se devuelve para buscar cualquier texto extraño que lo haga no visible pararesponseJSON
Respuestas:
También enfrenté el mismo problema. Lo intenté en
responseString
lugar deresponseJSON
y funcionó. Supongo que esto es un errorAlamofire
al usarlo condjango
.fuente
Recibí el mismo error al cargar la imagen en forma de varias partes en Alamofire que estaba usando
Lo arreglé reemplazando por
Espero que esto ayude a alguien.
fuente
Que esto te ayude
fuente
Me sucedió el mismo problema y, en realidad, terminó siendo un problema del servidor, ya que el tipo de contenido no estaba configurado.
Añadiendo
A la cadena de solicitudes me lo resolvió
fuente
En mi caso, la URL de mi servidor era incorrecta. ¡Verifique la URL de su servidor!
fuente
Tengo el mismo error. Pero encontré la solución.
NOTA 1: "No es un error de Alarmofire", es debido a un error del servidor.
NOTA 2: No es necesario cambiar "responseJSON" por "responseString".
fuente
Así es como logré resolver el error 3840 incorrecto.
El registro de errores
Para conocer la codificación, tuve que ejecutar todos los tipos de codificación:
Si la respuesta no es un JSON y solo una cadena en la respuesta, use responseString
Ejemplo : en caso de iniciar sesión / crear API de token:
fuente
Resolví usando esto como encabezado:
let header = ["Content-Type": "application/json", "accept": "application/json"]
fuente
En mi caso, había un extra / en la URL.
fuente
Tal vez sea demasiado tarde, pero resolví este problema de otra manera que no se menciona aquí:
Cuando lo use
.responseJSON()
, debe configurar el encabezado de respuesta concontent-type = application/json
, si no, se bloqueará incluso si su cuerpo es un JSON válido. Entonces, tal vez su encabezado de respuesta esté vacío o use otro tipo de contenido.Asegúrese de que su cabecera de respuesta se establece con
content-type = application/json
que.responseJSON()
en el trabajo Alamofire correctamente.fuente
Hola chicos, esto es lo que encontré que era mi problema: estaba llamando a Alamofire a través de una función para autenticar usuarios: utilicé la función "Iniciar sesión de usuario" con los parámetros que se llamarían desde el "cuerpo" (correo electrónico: Cadena, contraseña: String) Eso se pasaría
mi error fue exactamente:
opcional (alamofire.aferror.responseserializationfailed (alamofire.aferror.responseserializationfailurereason.jsonserializationfailed (error domain = nscocoaerrordomain code = 3840 "valor inválido alrededor del carácter 0." userinfo = {nsdebugdescription = valor inválido alrededor del carácter 0
el carácter 0 es la clave aquí: lo que significa que la llamada para el "correo electrónico" no coincidía con los parámetros: consulte el código a continuación
func loginUser (correo electrónico: String, contraseña: String, completado: @escaping downloadComplete) {let lowerCasedEmail = email.lowercased ()
"email" en los parámetros de la función debe coincidir con let "email" al analizar, entonces funcionará ... Ya no recibí el error ... Y el carácter 0 era el "email" en el parámetro "body" para la solicitud de Alamofire:
Espero que esto ayude
fuente
Estaba enviando el tipo incorrecto (String) al servidor en mis parámetros (necesitaba ser un Int).
fuente
El error se resolvió después de agregar la codificación: JSONEncoding.default con Alamofire.
fuente
La aplicación en la que estaba trabajando esta mañana tenía el mismo error. Creí que era un error del lado del servidor ya que no pude cargar una imagen de usuario.
Sin embargo, al verificar mi API personalizada, me di cuenta de que después de agregar un certificado SSL a mi sitio web que no había actualizado las URL de api.swift, los datos no se pudieron publicar:
Cambié la URL a https: //. Problema resuelto.
fuente
En mi caso, tengo que agregar esta clave: "Aceptar": "aplicación / json" a mi solicitud de encabezado.
Algo como esto:
Espero que esto pueda ayudar a alguien.
fuente
Me enfrento al mismo problema y el problema está en los parámetros.
companyModal.directory_path
es url. coaccionaba de la cadena a cualquiera que creara problemas en el lado del servidor. Para resolver este problema, tengo que dar un valor predeterminado que lo convierte en un valor de cadena.fuente
Probablemente tenga "/" al final de su camino. Si no es una solicitud GET, no debe poner "/" al final; de lo contrario, obtendrá el error
fuente
Cambié mimeType de "mov" a "multipart / form-data".
Trabajó para mi.. :)
fuente
Para mi caso:
Olvidé el espacio antes
\
(despuésBearer
)fuente
En mi caso, el error se debió a un correo electrónico duplicado. Puede volver a verificar su API en cartero para ver si la respuesta está bien o no.
fuente