我编写了一个Java程序来检查网络请求是否会重定向。
由于HTTP协议中有一些状态码,我需要寻找表示重定向请求的302状态码,
这是我的代码旋转网:
URL url = new URL("http://localhost/test/test_page_1.php");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.connect();
var code = connection.getResponseCode();
code
变量应包含302值,因为我的PHP代码通过以下代码设置302重定向代码和位置标头header("location: pg_2.php")
,但相反,它包含200个表示OK的代码。在您的 Java 代码中,您正在调用
connection.setInstanceFollowRedirects(true);
在拨打
connect()
电话之前。这意味着 Java 客户端……在收到 302 响应时……将执行重定向;即重新发送请求到重定向位置。当您调用 getResponseCode()
或 getHeaderFields()
时,您看到的是第二个(重定向的)GET 响应的详细信息。
在这种情况下,重定向有效,因此响应代码为 200,并且标头不包含
location
标头。
如果您想查看
302
响应及其标头,请致电 setInstanceFollowRedirects(false)
。