2016-11-29 4 views
0

Zuerst - ich bin ziemlich neu in Java. Ich arbeite an einer App, die Shiro verwendet und ich habe eine REST für Abmeldung definiert. Es hat eine Umleitung in dessen Innerem mir 302 Found Statuscode gibt bei der Verwendung von Entwickler-Tools in Chrome:Falscher Statuscode in HttpResponse

return Response.temporaryRedirect(redirectionAddress).build(); 

Das Problem ist, ich kann nicht diesen Status erhalten mit Postman oder einfach nur, indem sie es in einem Test Aufruf:

HttpUriRequest request = new HttpGet("http://localhost:8080/shop/logout/); 
HttpResponse httpResponse = HttpClientBuilder.create().build().execute(request); 

Nach dem Aufruf der Rest bekomme ich nur 200 OK-Code ohne 302 Umleitung. Vielleicht ist es die Antwort, wenn auf der Serverseite keine Sitzung stattfindet. In Postman verwende ich Basic Auth, aber in der HttpGet gibt es keine Autorisierung, weil ich nicht sicher bin, wie es geht. Ich habe versucht, einen Header hinzufügen, aber es auch nicht funktioniert:

httpRequestBase.addHeader("Authorization", "Basic " + auth); 

Sollte ich Erstanmeldung Ruhe und als Logout aufrufen? Gibt es eine Möglichkeit, die Abmeldung ohne Login zu testen?

+1

Postman die Umleitung nicht, nur das Ergebnis der Umleitung zu sehen, siehe https://github.com/postmanlabs/postman-app-support/issues/186 . – dur

Antwort

1

Apache Httpclient funktioniert die automatische Umleitung Behandlung finden HttpClient Tutorial:

1,7. Redirect-Verarbeitung

HttpClient behandelt alle Arten von Redirects automatisch, mit Ausnahme derer, die explizit durch die HTTP-Spezifikation als Benutzereingriff verboten sind. See Other (Statuscode 303) Weiterleitungen auf POST und PUT Anforderungen werden in GET-Anforderungen wie von der HTTP-Spezifikation erforderlich konvertiert.

aber Sie können es deaktivieren, siehe HttpClientBuilder#disableRedirectHandling:

Deaktiviert die automatische Umleitung Handhabung.

Ihr modifizierten Code:

HttpUriRequest request = new HttpGet("http://localhost:8080/shop/logout/"); 
HttpResponse httpResponse = HttpClientBuilder.create().disableRedirectHandling().build().execute(request); 
Verwandte Themen