Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以知道url是否正在重定向_Java_Url_Http Redirect - Fatal编程技术网

Java 是否可以知道url是否正在重定向

Java 是否可以知道url是否正在重定向,java,url,http-redirect,Java,Url,Http Redirect,我正在用java开发一个应用程序,用于验证一个站点是否在线。 我通过以下方式获得http响应: URL url = new URL("http://www.example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 但是当我访问URL时,它是重定向的,HTTP响应总是301。我想获得该网站被重定向的新URL。可能吗 重定向的目标位于响应的HTTP标头中,请查找“位置”标头。您可以

我正在用java开发一个应用程序,用于验证一个站点是否在线。 我通过以下方式获得http响应:

URL url = new URL("http://www.example.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();

但是当我访问URL时,它是重定向的,HTTP响应总是301。我想获得该网站被重定向的新URL。可能吗

重定向的目标位于响应的HTTP标头中,请查找“位置”标头。

您可以使用以下方法访问标头:

String redirectUrl = connection.getHeaderField("Location");

返回指定的标题字段。您需要将follow redirect设置为true,api将加载重定向页面,然后您可以按照其他人的建议检查位置标题。默认情况下,HttpURLConnection的可能重复项会自动跟随重定向。如果您获得301,您必须使用
setFollowRedirects
setInstanceFollowRedirects
方法明确禁用以下重定向,但您在问题中没有提到这一点。@ErwinBolwidt我试图获得响应的站点给我一个301和302 HTTP响应。但是使用getHeaderField()我只得到了旧的URL我得到了标题中的URL,但它是一样的。我实际上得到了两个HTTP响应,一个是301,另一个是302。这会改变我获取标题的方式吗?@ThalesFlores你确定这是同一个URL吗?或者它以
https
开始,而不是
http
?我正在访问的站点是https,当它重定向到http时。但是当我的代码运行时,我只得到https URL。这很奇怪,因为该方法应该得到最终的重定向,如以下示例所示:
URL URL=newURL(“http://www.microsoft.com");         HttpURLConnection connection=(HttpURLConnection)url.openConnection();字符串重定向URL=connection.getHeaderField(“位置”);System.out.println(重定向URL)
@OmarEDDASSER我自己再次导入API,现在它可以工作了。谢谢你的注意