HTTPURLConnection 不遵循从 HTTP 到 HTTPS 的重定向

java

2个回答

写回答

2051659817

2025-09-17 19:02

+ 关注

Java
Java

使用HTTPURLConnection进行网络请求时,我们经常会遇到从HTTP到HTTPS的重定向。然而,有时候HTTPURLConnection并不会自动遵循这种重定向,这给我们的开发带来了一些麻烦。本文将介绍如何处理这种情况,并提供一个案例代码来说明解决办法。

案例代码:

Java

import Java.io.BufferedReader;

import Java.io.IOException;

import Java.io.InputStreamReader;

import Java.net.HttpURLConnection;

import Java.net.URL;

public class HttpRedirectExample {

public static void mAIn(String[] args) {

String url = "http://example.com";

try {

URL obj = new URL(url);

HttpURLConnection conn = (HttpURLConnection) obj.openConnection();

conn.setInstanceFollowRedirects(true); // 设置自动重定向

int responseCode = conn.getResponseCode();

if (responseCode == HttpURLConnection.HTTP_OK) {

BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

String inputLine;

StringBuilder response = new StringBuilder();

while ((inputLine = in.readLine()) != null) {

response.append(inputLine);

}

in.close();

System.out.println(response.toString());

} else {

System.out.println("请求失败,错误码:" + responseCode);

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

当我们使用HTTPURLConnection发送HTTP请求时,如果服务器返回状态代码为302,表示重定向,HTTPURLConnection默认情况下并不会自动遵循重定向。这意味着我们需要手动处理重定向。

处理HTTP重定向:

为了处理HTTP重定向,我们需要设置HttpURLConnection的setInstanceFollowRedirects方法为true,这样它将自动遵循从HTTP到HTTPS的重定向。

在上面的案例代码中,我们首先创建一个URL对象,然后将其转换为HttpURLConnection对象。接下来,我们设置setInstanceFollowRedirectstrue,这样我们就可以自动遵循重定向了。

如果服务器返回的状态码为HTTP_OK(200),我们可以读取服务器返回的数据。否则,我们可以根据不同的状态码进行相应的处理。

通过设置setInstanceFollowRedirectstrue,我们可以让HTTPURLConnection自动遵循从HTTP到HTTPS的重定向。这样,我们就可以方便地处理重定向并获取到重定向后的结果。

使用上述的案例代码,我们可以轻松地处理从HTTP到HTTPS的重定向,并获取到服务器返回的数据。这对于开发网络应用程序非常有帮助。

举报有用(4分享收藏

在使用 HttpURLConnection 时,默认情况下它不会自动处理从 HTTP 到 HTTPS 的重定向。如果需要处理此类重定向,可以通过设置 setInstanceFollowRedirects(true) 方法来实现。但是请注意,这仅适用于 Java 1.4 及更高版本。对于早期版本的 Java,可能需要手动处理重定向。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号