Angular 2 http post is returning 200 but no response is returned

风流意气都作罢 提交于 2020-01-15 05:18:06

问题


My http call is returning 200 but no response is captured. My code inside subscribe is not being hit. The API is returning data when I test in postman. Here is my code.

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;
            })

    }

回答1:


I was also facing the same problem. The problem was solved using the map function on Observables. Here is my implementation:

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);
}

Here the handleError is a function to catch the excceptions generated. This is a function in login.service.ts that sends the username and password to the api to get data. You can see that I am returning response from the map function in this service. Now, this returned response can be caught in subscribe function in following way:

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'])}
        );


来源:https://stackoverflow.com/questions/39677629/angular-2-http-post-is-returning-200-but-no-response-is-returned

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!