2017-10-31 18 views
0

私はトークンUriに行く情報とともに投稿要求を送信しようとしています。情報が送信され、私はそれから許可を得た後、トークンUriからアクセストークンを返すことになっています。私はjQueryのjavascriptプレーンhtmlページで動作するようにすることができますが、angular2 http投稿要求ではありません。私は2つの要求の間に相違があるかどうか疑問に思っています。なぜなら、少なくとも同じ情報を送信していると思うからです。 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

Angularでは、 '_http'とは何ですか?あなたは古い 'HttpModule'または新しい' HttpClientModule'を使用していますか? – BeetleJuice

答えて

0

の場合ブラウザのネットワーク開発ツールを開いてリクエストヘッダを見ると、0がないことがわかりますリクエスト(Angular実装で)。ヘッダーとしてではなく、データペイロードの一部としてこれを送信しています。

新しい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()); 
    } 

これを試してみてください。これは役に立ちます。

関連する問題