2017-10-31 2 views
0

Uri 토큰에 대한 정보가 포함 된 게시물 요청을 보내려고합니다. 정보가 전송되고 권한이 부여 된 후 토큰 Uri에서 액세스 토큰을 다시 받아야합니다. 나는 jQuery 자바 스크립트 일반 HTML 페이지에서 작동하도록 할 수 있지만 angular2 http 게시물 요청은 할 수 없다. 두 가지 요청간에 차이가 있는지 궁금합니다. 적어도 동일한 정보를 보내고 있기 때문입니다. postRequest 함수는 버튼이며 푸시 될 때 요청을 매핑하고 구독하기로되어 있습니다. jQuery는 angular2가 나에게이 오류를주는 동안 작동합니다. jquery 요청 위의 모든 변수는 Angular 요청에 대해 동일합니다. 도움이나 답변을 주셔서 감사합니다 올바른 방향으로 나를 가리 킵니다.각도 게시물 요청에 오류가 있지만 Jquery가 없습니다.

{ "오류": "invalid_client", "ERROR_DESCRIPTION": "잘못된 클라이언트 자격 증명"}

jQuery를 요청

var data = { 
code: code, 
grant_type: 'authorization_code', 
redirect_uri: redirectUri 
}; 

var options; 

if (!secret) { 
    data['client_id'] = clientId; 
} 

options = { 
    url: tokenUri, 
    type: 'POST', 
    data: data 
}; 

if (secret) { 
    options['headers'] = {'Authorization': 'Basic ' + btoa(clientId + ':' + 
secret)}; 
} 

// obtain authorization token from the authorization service using the 
authorization code 

$.ajax(options).done(function (res) { 
    // should get back the access token and the patient ID 
    var accessToken = res.access_token; 
    var patientId = res.patient; 

각도 요청

postRequest() { 
    return this._http.post(this.tokenUri, JSON.stringify(this.data)) 
    .map((postResponse: Response) => postResponse.json()) 
    .subscribe(httpPostResponse => this.postResponseJson = 
    httpPostResponse); 
} 
+0

각도로 '_http'는 무엇입니까? 오래된'HttpModule' 또는 최신'HttpClientModule'을 사용하고 있습니까? – BeetleJuice

답변

0

하는 경우 브라우저의 네트워크 개발자 도구를 열고 요청 헤더를 보면 0이 없음을 알 수 있습니다.요청 (각도 구현 포함). 이것을 헤더 대신 데이터 페이로드의 일부로 보내고 있습니다.

새로운 사용법을 배우는 것이 좋습니다 HttpClientModule; 구체적으로 how to add headers입니다.

이 모듈에서는 응답이 자동으로 JSON으로 구문 분석되므로 .map((postResponse: Response) => postResponse.json())을 제거 할 수 있습니다. 또한 데이터 페이로드를 json-stringify 할 필요도 없습니다. 각도가 당신을 위해 그것을 할 것입니다.

let auth = 'Basic ' + btoa(clientId + ':' + secret); 
this._http.post('tokenUri', data, 
       {headers: new HttpHeaders().set('Authorization', auth} 
).subscribe(...); 
0
postRequest(searchText): Observable<any[]> { 
    let headers = new Headers({ 'Content-Type': 'application/json' }); 
    let options = new RequestOptions({ headers: headers }); 
    let url = "http:dddddring"; 
    return this.http.post(url,searchText).map((res: Response) => res.json()); 
    } 

이보십시오. 이것은 도움이 될 수 있습니다.