Java HttpClient重定向结果在浏览器中不可见

Java HttpClient重定向结果在浏览器中不可见,java,servlets,redirect,browser,httpclient,Java,Servlets,Redirect,Browser,Httpclient,我试图使用ApacheHttpClient 4.3重定向到“某个url”。 当下面的代码运行时,我得到“200OK”状态,但浏览器中没有任何变化。 这段代码在servlet的doGet()方法中,我不想使用response.sendRedirect() 如何在浏览器中查看重新运行的网页的URL String url = "some url"; HttpClient instance = HttpClientBuilder.create().setRedirectStr

我试图使用ApacheHttpClient 4.3重定向到“某个url”。 当下面的代码运行时,我得到“200OK”状态,但浏览器中没有任何变化。 这段代码在servlet的doGet()方法中,我不想使用response.sendRedirect()

如何在浏览器中查看重新运行的网页的URL

 String url = "some url";
   HttpClient instance = 
         HttpClientBuilder.create().setRedirectStrategy(new LaxRedirectStrategy()).build();

 try {
    HttpResponse response = instance.execute(new HttpGet(url));
   } catch (IOException e) {
    e.printStackTrace();
   }

根据您问题中的描述,这是您的堆栈:

浏览器向基于Servlet的服务器发送HTTP请求。基于Servlet的服务器使用Apache
HttpClient
向“某个url”发送HTTP请求<代码>“某些url”以重定向302响应,
HttpClient
由于其
宽松的重定向策略而遵循该重定向302<代码>“某些url”
以其他HTTP响应进行响应。基于Servlet的服务器完成并以200 OK响应浏览器客户端

浏览器客户端和您在servlet中使用的Apache
HttpClient
实例之间绝对没有关系

如何在浏览器中查看返回网页的URL

 String url = "some url";
   HttpClient instance = 
         HttpClientBuilder.create().setRedirectStrategy(new LaxRedirectStrategy()).build();

 try {
    HttpResponse response = instance.execute(new HttpGet(url));
   } catch (IOException e) {
    e.printStackTrace();
   }

这没有道理。如果要在浏览器中查看URL,则需要通过浏览器向该URL发送请求,或者让浏览器执行重定向

什么?为什么您希望浏览器客户端发生任何事情?谢谢您的回复。HttpClient是否发送了两次重定向请求,因为在Fiddler中我可以看到两个响应:第一个状态为302,第二个状态为200?@Suro HTTP处理一个请求,一个响应周期。因此,例如,客户端发送一个HTTP请求并接收302响应。它向302响应头中的
位置
URL发送第二个HTTP请求,并接收200个响应。感谢您的详细解释:)