以下代码段应打印出使用Location
标题重定向到新页面/文件(http://somepagethatredirects.me/after.txt
)的网站的新位置:
URL website = new URL("http://somepagethatredirects.me/before.txt");
URLConnection urlConnection = website.openConnection();
System.out.println(urlConnection.getURL());
即使我们希望该位置为http://somepagethatredirects.me/after.txt
,我们也会获得指定的URL参数。
添加(看似无关的)方法,例如urlConnection.getHeaderField("Location")
,urlConnection.getHeaderFields()
或甚至urlConnection.getExpiration()
,会(奇怪地)给我们预期的结果:
URL website = new URL("http://somepagethatredirects.me/before.txt");
URLConnection urlConnection = website.openConnection();
urlConnection.getHeaderFields();
System.out.println(urlConnection.getURL());
这是预期的行为吗?这对我来说似乎是个错误。
修改1 :
正如Jeffrey Bosbom指出的那样,调用urlConnection.openConnection()
实际上并没有建立与服务器的连接,urlConnection.connect()
确实(或其他隐含有效连接的方法)。但这并没有改变程序的输出:
URL website = new URL("http://somepagethatredirects.me/before.txt");
URLConnection urlConnection = website.openConnection();
urlConnection.connect();
System.out.println(urlConnection.getURL());
答案 0 :(得分:0)
在您执行以下任何操作之前,HTTP事务都不会发生:
我不确定即使在此之后您有任何期望getURL()
提供最终目标网址的依据。