HttpResponse中的状态码错误

时间:2016-11-29 13:19:31

标签: java rest http jax-rs shiro

起初 - 我对Java很新。我正在开发一个使用Shiro的应用程序,我已经定义了一个用于注销的REST。它有一个重定向内部,在Chrome中使用开发工具时为我提供了302 Found Status Code:

Parsley.setLocale('de');

问题是,我无法使用Postman获得此状态,或者只是在测试中调用它:

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

在调用其余部分之后,我只获得200个没有302重定向的OK代码。当服务器端没有会话时,它可能是响应。在Postman我使用Basic Auth,但在HttpGet中没有授权,因为我不知道该怎么做。我尝试添加标题,但它也不起作用:

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

我应该首先调用登录休息而不是注销吗?有没有选项可以在没有登录的情况下测试注销?

1 个答案:

答案 0 :(得分:1)

Apache HttpClient执行自动重定向处理,请参阅HttpClient Tutorial

  

<强> 1.7。重定向处理

     

HttpClient自动处理所有类型的重定向,但HTTP规范明确禁止的需要用户干预的重定向除外。 See Other(状态代码303)重定向POSTPUT请求将根据HTTP规范的要求转换为GET请求。

但您可以将其停用,请参阅HttpClientBuilder#disableRedirectHandling

  

禁用自动重定向处理。

您修改过的代码:

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