Java重定向添加header
在编写Java程序时,经常会遇到需要发送HTTP请求并处理返回结果的情况。有时,我们需要在发送请求时添加一些自定义的header信息,以便服务器能正确处理请求。本文将介绍如何在Java中进行重定向并添加header信息的方法。
在Java中,我们可以使用HttpURLConnection类来发送HTTP请求。该类提供了一个方便的API来处理网络请求,并支持重定向功能。下面是一个简单的示例代码,演示了如何发送一个GET请求并重定向到目标网址:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpRedirectExample {
public static void main(String[] args) throws Exception {
String url = "
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
// 设置请求方法为GET
con.setRequestMethod("GET");
// 添加自定义的header信息
con.setRequestProperty("User-Agent", "Mozilla/5.0");
// 获取重定向后的URL
int responseCode = con.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_MOVED_TEMP
|| responseCode == HttpURLConnection.HTTP_MOVED_PERM
|| responseCode == HttpURLConnection.HTTP_SEE_OTHER) {
String redirectUrl = con.getHeaderField("Location");
System.out.println("Redirected to: " + redirectUrl);
}
// 读取服务器返回的内容
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// 打印返回结果
System.out.println(response.toString());
}
}
在上面的示例代码中,我们首先指定了目标网址,然后创建了一个URL对象。通过调用URL对象的openConnection()方法,我们获得了一个HttpURLConnection对象。接下来,我们设置请求方法为GET,并添加了一个自定义的header信息,这里我们设置了"User-Agent"为"Mozilla/5.0"。然后,我们发送请求并获取重定向后的URL,如果返回的状态码是301、302或303,说明发生了重定向,并且通过getHeaderField("Location")方法获取重定向后的URL。最后,我们读取服务器返回的内容,并打印出来。
需要注意的是,如果目标网址是https协议的,我们需要导入javax.net.ssl包,并使用HttpsURLConnection类来发送请求。示例代码如下:
import javax.net.ssl.HttpsURLConnection;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
public class HttpsRedirectExample {
public static void main(String[] args) throws Exception {
String url = "
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
// 设置请求方法为GET
con.setRequestMethod("GET");
// 添加自定义的header信息
con.setRequestProperty("User-Agent", "Mozilla/5.0");
// 获取重定向后的URL
int responseCode = con.getResponseCode();
if (responseCode == HttpsURLConnection.HTTP_MOVED_TEMP
|| responseCode == HttpsURLConnection.HTTP_MOVED_PERM
|| responseCode == HttpsURLConnection.HTTP_SEE_OTHER) {
String redirectUrl = con.getHeaderField("Location");
System.out.println("Redirected to: " + redirectUrl);
}
// 读取服务器返回的内容
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// 打印返回结果
System.out.println(response.toString());
}
}
上述示例代码中,唯一的区别是导入了HttpsURLConnection类,并使用该类来创建连接对象。
总结一下,通过使用HttpURLConnection类(或HttpsURLConnection类),我们可以发送HTTP请求并获取服务器返回的结果,同时也支持重定向功能。在发送请求时,我们可以添加自定义的header信息,以便服务器能正确处理请求。希望本文对你理解Java中重定向并添加header信息有所帮助。
参考文献
- [Java URLConnection Example](