Java HttpClient重定向结果在浏览器中不可见
我试图使用ApacheHttpClient 4.3重定向到“某个url”。 当下面的代码运行时,我得到“200OK”状态,但浏览器中没有任何变化。 这段代码在servlet的doGet()方法中,我不想使用response.sendRedirect() 如何在浏览器中查看重新运行的网页的URLJava 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
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中使用的ApacheHttpClient
实例之间绝对没有关系
如何在浏览器中查看返回网页的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个响应。感谢您的详细解释:)