Estoy tratando de devolver un valor de cadena de Spring Boot a Angular, pero obtiene un HttpErrorResponse cuando recibe el valor. Intenté usar el tipo de número entero en primavera y el tipo de número y de esta manera funciona. ¿Alguien puede decirme qué estoy haciendo mal? Gracias.
El HttpErrorResponse que obtengo en console.log(resp) es:
HttpErrorResponse {headers: HttpHeaders, status: 200, statusText: 'OK', url: 'http://localhost:8080/login', ok: false, …} error: {error: SyntaxError: Unexpected token u in JSON at position 0 at JSON.parse (<anonymous>) at XMLHtt…, text: 'user'} headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, lazyInit: f} message: "Http failure during parsing for http://localhost:8080/login" name: "HttpErrorResponse" ok: false status: 200 statusText: "OK" url: "http://localhost:8080/login"Este es mi código:
formulario de inicio de sesión.component.ts:
login() { let url = 'http://localhost:8080/login'; this.http.post<string>(url, { username: this.model.username, password: this.model.password }).subscribe(resp => { console.log(resp); switch(resp){ case "admin": { this.router.navigateByUrl('/actions', { state: { username: this.model.username , role:'admin' } }); break; } case "user": { this.router.navigateByUrl('/actions', { state: { username: this.model.username , role:'user' } }); break; } default: alert("Authentication failed."); } }); }HttpClient analiza automáticamente la respuesta a un objeto genérico a menos que le indique lo contrario. Está enfrentando problemas ya que está tratando de analizar una cadena. Debe decirle al HttpClient que espera text . Establezca el tipo de responseType como text y HttpClient sabe que no debe intentar analizarlo:
login() { this.http.post(url, {...}, { responseType: 'text' }) }Consulte la documentación: https://angular.io/guide/http#requesting-non-json-data