Mi llamada http devuelve 200 pero no se captura ninguna respuesta. Mi código dentro de la suscripción no está siendo afectado . La API está devolviendo datos cuando pruebo en cartero. Aquí está mi código.
getToken(authcode: string) {
var data = 'client_id=InspectWebApp_client&code=' + authcode + '&redirect_uri=http://localhost:3000&grant_type=authorization_code';
let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
let options = new RequestOptions({ headers: headers });
this.http.post('https://fedloginqa.test.com/as/token.oauth2', data, options)
.subscribe((res: Response) => {
var resultsToken = res.json();
localStorage.setItem("access_token",resultsToken.access_token)
//return this.inspections;
})
}
También me enfrentaba al mismo problema. El problema se resolvió utilizando la función de mapa en Observables. Aquí está mi implementación:
login(Username:string, Password:string) : Observable<Response>{
let headers = new Headers();
headers.append("Authorization", "Basic " + btoa(Username + ":" + Password));
headers.append("Content-Type", "application/x-www-form-urlencoded");
return this._http.post(this._baseUrl+"auth/login", " " , {headers: headers} )
.map((response: Response) => {
return response;
}).catch(this.handleError);
}
Aquí, handleError es una función para capturar las excepciones generadas. Esta es una función en login.service.ts que envía el nombre de usuario y la contraseña a la API para obtener datos. Puede ver que estoy devolviendo la respuesta de la función de mapa en este servicio. Ahora, esta respuesta devuelta se puede capturar en la función de suscripción de la siguiente manera:
this._loginService.login(this.username, this.password)
.subscribe(
(response) => {
//Here you can map the response to a type.
this.apiResult = <IUser>response.json();
},
(err) => {
//Here you can catch the error
},
() => {this.router.navigate(['home'])}
);
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras