Ich habe einige Schwierigkeiten herauszufinden, warum ich eine Null-Antwort in eckigen, wenn ich versuche, einen Beitrag zu einem httpservlet (Java) in einer WAS-Umgebung zu tun.Httpclient Antwort null beim Aufruf von Java Servlet
Was ich versuche zu tun ist, rufen Sie eine API zum Login. Ich möchte die Antwort-Header erhalten, aber ich bekomme eine Null-Antwort, was es unmöglich macht, etwas mit der Antwort zu tun.
Ich habe versucht, meine Parameter als Formulardaten mit der Content-Type-Anwendung/x-www-form-urlencoded; charset = UTF-8 und als Abfrageparameter ohne definierten Inhaltstyp zu senden.
In beiden Situationen kann ich mich anmelden und bekomme eine 200 Antwort mit Header-Informationen in meinem Browser.
das ist mein Aufruf
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;
});
jetzt Mein Kopf info ist
httpOptions = {
headers: new HttpHeaders({'Content-Type' : 'application/json', 'Accept': 'application/text'}),
params: {}
};
die localstorage Artikel gesetzt wird, aber die Wieder sponseinformation ist null.
das ist mein
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;
});
}
abonnieren Wenn im den Browser Info über meine Antwort Header-Kontrolle bekomme ich folgende Info
kann mir jemand sagen, was ich vermisse?
unten ist die ursprüngliche Methode
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;
});
}
Was ist der Server wieder als Antworttext senden? Was erwartest du zu passieren? Und warum senden Sie die Anmeldeinformationen als Teil der URL, anstatt sie im Hauptteil zu senden? Sie möchten wirklich nicht, dass die Kennwörter in den Serverprotokollen angezeigt werden. –
Ich benutzte dies als einen anderen Ansatz, um zu sehen, ob sich etwas ändern wird, wenn ich die Parameter als URL Params sende, ist der ursprüngliche Ansatz, es als Formulardaten zu senden, die natürlich im Körper ist. Der Antworttext ist leer, weil das Servlet keine anderen Informationen als einen Status 200 mit Header-Informationen (wie dem Cookie) liefert. –
Ich nehme an, Sie möchten die Antwort beobachten? https://angular.io/guide/http#reading-the-full-response – Alex