2017-12-30 40 views
1

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: {} 
 
    };

ですが、再ですスポンサー情報はヌルです。

これは誰もがものを私に伝えることができますイムは、私のレスポンスヘッダ上のブラウザ情報をチェックするとき、私の私は、次の情報

enter image description here

を取得

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

+1

のですか?何が起こると思いますか?なぜ身体に送信するのではなく、URLの一部としてクレデンシャルを送信するのですか?実際には、サーバーログにパスワードを表示させたくありません。 –

+0

私はparamをurl paramsとして送信すると何かが変わるかどうかを調べるためにこれを別の方法として使用しました。元のアプローチはフォームデータとして送信することです。サーブレットは他の情報を与えず、ヘッダー情報(Cookieなど)を持つステータス200を返さないため、レスポンス本文は空です –

+0

レスポンスを確認したいと思いますか? https://angular.io/guide/http#reading-the-full-response – Alex

答えて

1

AJT_82、

が観察追加ありがとう:設定への応答は、 "ソリューションです。

応答は今私が期待しているものです。デフォルトの応答は 'body'のように見えます。

マイHTTPの設定は今

httpOptions = { 
 
    headers: new HttpHeaders({'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8','Accept': 'application/xml'}), 
 
    observe: 'response' 
 
    };

で、私の応答は、サーバがレスポンスボディとして何を返送しない今

enter image description here

関連する問題