📅  最后修改于: 2023-12-03 14:42:17.436000             🧑  作者: Mango
Java 中的 URLConnection
类是一个用于从 URL 中读取数据的类。它可以让程序员通过 URL 来进行数据的读取和写入操作,例如:
本篇文章将介绍如何使用 URLConnection
类来读取 URL 中的内容。
下面是一个使用 URLConnection
类读取 URL 内容的示例代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
public class URLConnectionDemo {
public static void main(String[] args) throws IOException {
URL url = new URL("https://www.example.com/");
URLConnection urlConnection = url.openConnection();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
bufferedReader.close();
}
}
在这个示例中,我们首先创建了一个 URL
对象,然后使用 openConnection()
方法创建一个 URLConnection
对象。接下来,我们使用 getInputStream()
方法获取 URL 的输入流,并使用 BufferedReader
对象逐行读取其中的内容,最后关闭输入流。
在使用 URLConnection
时,可能会遇到以下问题:
如果访问的 URL 包含密码,需要使用 URLConnection
的 setRequestProperty()
方法来设置 Authorization
请求头信息:
String authString = username + ":" + password;
byte[] authEncBytes = Base64.getEncoder().encode(authString.getBytes());
String authStringEnc = new String(authEncBytes);
urlConnection.setRequestProperty("Authorization", "Basic " + authStringEnc);
其中,username
和 password
分别为 URL 的用户名和密码。
如果访问的 URL 使用 HTTPS 协议,需要在代码中添加以下两行代码来信任所有证书:
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
} };
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
如果访问的 URL 包含 cookie,需要使用 URLConnection
的 setRequestProperty()
方法来设置 Cookie
请求头信息:
urlConnection.setRequestProperty("Cookie", "name=value");
其中,name
和 value
分别为 cookie 的名称和值。
URLConnection
类提供了方便的方式来访问 URL 中的数据。使用它可以读取文本、二进制文件等内容,也可以向 URL 中写入数据。在操作过程中,需要注意 URL 中可能包含的密码、HTTPS 等情况,需要做好相应的处理。