WAS環境でhttpservlet(java)への投稿をしようとすると、なぜ私がヌル応答を返すのかわかりにくいです。Javaサーブレットを呼び出すときにHttpclientレスポンスがnullになる
私がしようとしているのは、ログインするためにAPIを呼び出すことです。私はレスポンスヘッダーを受け取っていますが、レスポンスで何もすることができないので、nullレスポンスを得ています。
私は、content-typeアプリケーション/ x-www-form-urlencoded; charset = UTF-8と、content-typeが定義されていないクエリパラメータとしてフォームデータとしてパラメータを送信しようとしました。
どちらの場合でも、ログインでき、ブラウザでヘッダー情報を持つ200個の応答を取得できます。
これは私のコール
return this.http.post(this.contextRoot.getHost() + 'osa-kantoor-ws/api/auth/login?' + param1 + "&" + param2,null, this.httpOptions).map((res : Response) => {
localStorage.setItem('currentUser', JSON.stringify(username));
return res;
});
私のヘッダ情報は、現在のlocalStorage項目が設定されている
httpOptions = {
headers: new HttpHeaders({'Content-Type' : 'application/json', 'Accept': 'application/text'}),
params: {}
};
ですが、再ですスポンサー情報はヌルです。
これは誰もがものを私に伝えることができますイムは、私のレスポンスヘッダ上のブラウザ情報をチェックするとき、私の私は、次の情報
を取得
login() {
this.loginService.login(this.loginForm.value.userName,this.loginForm.value.password)
.subscribe(
data => {
console.log(data);
this.router.navigate([this.returnUrl]);
},
error => {
console.log(error);
this.loginfail = true;
});
}
をサブスクライブです私は行方不明ですか?
以下が元のメソッドである
login(username: string, password: string) {
let param1: string = encodeURIComponent('userName') + '=' + encodeURIComponent(username);
let param2: string = encodeURIComponent('password') + '=' + encodeURIComponent(password);
let formParams: string = param1 + '&' + param2;
return this.http.post(this.contextRoot.getHost() + 'osa-kantoor-ws/api/auth/login', formParams, this.httpOptions).map(response=> {
localStorage.setItem('currentUser', JSON.stringify(username));
console.log(response);
return response;
});
}
のですか?何が起こると思いますか?なぜ身体に送信するのではなく、URLの一部としてクレデンシャルを送信するのですか?実際には、サーバーログにパスワードを表示させたくありません。 –
私はparamをurl paramsとして送信すると何かが変わるかどうかを調べるためにこれを別の方法として使用しました。元のアプローチはフォームデータとして送信することです。サーブレットは他の情報を与えず、ヘッダー情報(Cookieなど)を持つステータス200を返さないため、レスポンス本文は空です –
レスポンスを確認したいと思いますか? https://angular.io/guide/http#reading-the-full-response – Alex