Intento enviar una solicitud POST desde Angular 4 a mi backend de Laravel.
Mi LoginService tiene este método:
login(email: string, password: string) {
return this.http.post(`http://10.0.1.19/login`, { email, password })
}
Me suscribo a este método en mi LoginComponent:
.subscribe(
(response: any) => {
console.log(response)
location.reload()
},
(error: any) => {
console.log(error)
})
Y este es mi método de backend de Laravel:
...
if($this->auth->attempt(['email' => $email, 'password' => $password], true)) {
return response('Success', 200);
}
return response('Unauthorized', 401);
Mis herramientas de desarrollo de Chrome dicen que mi solicitud fue un éxito con el código de estado 200. Pero mi código Angular activa el error
bloque y me da este mensaje:
Error de Http durante el análisis de http://10.0.1.19/api/login
Si devuelvo una matriz vacía de mi backend, funciona ... ¿Entonces Angular está tratando de analizar mi respuesta como JSON? ¿Cómo puedo desactivar esto?
También debe verificar su JSON (no en DevTools, sino en un backend). Angular HttpClient tiene dificultades para analizar JSON con
\0
caracteres y DevTools lo ignorará, por lo que es bastante difícil de detectar en Chrome.Basado en este artículo
fuente
Tuve el mismo problema y la causa fue que en el momento de devolver una cadena en su backend (primavera), podría estar devolviendo como retorno "primavera usada"; Pero esto no se analiza correctamente según la primavera. En su lugar, use return "\" resorte usado \ ""; -Tranquilízate
fuente
Estaba enfrentando el mismo problema en mi aplicación Angular. Estaba usando la API REST de RocketChat en mi aplicación y estaba tratando de usar
rooms.createDiscussion
, pero como un error como se muestra a continuación.He intentado un par de cosas como cambiar el
responseType: 'text'
pero ninguna funcionó. Al final, pude encontrar que el problema estaba en mi instalación de RocketChat. Como se menciona en el registro de cambios de RocketChat, la APIrooms.createDiscussion
se introdujo en la versión 1.0.0, desafortunadamente, estaba usando una versión inferior.Mi sugerencia es verificar que la API REST esté funcionando bien o no antes de dedicar tiempo a corregir el error en su código Angular. Usé el
curl
comando para verificar eso.Allí también recibí un HTML no válido como respuesta.
En lugar de una respuesta JSON válida de la siguiente manera.
Entonces, después de actualizar a la última versión de RocketChat , pude usar la API REST mencionada.
fuente