Java HttpURLConnection setAuthenticator() 方法允许提供一个在通过 HTTP 协议请求对此 HttpURLConnection 进行身份验证时使用的身份验证器。如果未提供身份验证器,则将使用默认身份验证器。
声明
以下是 java.net.HttpURLConnection.setAuthenticator() 方法的声明
public void setAuthenticator(Authenticator auth)
参数
auth - 此HttpURLConnection应使用的身份验证器。
返回值
无
异常
UnsupportedOperationException - 如果底层实现不支持设置身份验证器。
IllegalStateException - 如果 URLConnection 已连接。
NullPointerException - 如果提供的身份验证为 null。
示例 1
以下示例显示了使用 Java HttpURLConnection setAuthenticator() 方法获取 https 协议的有效 url。在此示例中,我们将创建 URL 类的实例。使用 url.openConnection() 方法,我们获取 HttpURLConnection 实例。使用 setAuthenticator(),我们设置默认身份验证器。由于默认验证器为空,代码将抛出空指针异常,如下所示 -
package com.yxjc123;
import java.io.IOException;
import java.net.Authenticator;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpUrlConnectionDemo {
public static void main(String [] args) {
try {
URL url = new URL("https://www.yxjc123.com/index.htm?language=en#j2se");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setConnectTimeout(1000);
urlConnection.setAuthenticator(Authenticator.getDefault());
urlConnection.connect();
System.out.println("Connected.");
urlConnection.disconnect();
System.out.println("Disconnected.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
让我们编译并运行上面的程序,这将产生以下结果 -
输出
Exception in thread "main" java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:233)
at java.base/sun.net.www.protocol.http.HttpURLConnection.setAuthenticator(HttpURLConnection.java:541)
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.setAuthenticator(HttpsURLConnectionImpl.java:503)
at com.yxjc123.HttpUrlConnectionDemo.main(HttpUrlConnectionDemo.java:14)
示例 2
以下示例显示使用 Java HttpURLConnection setAuthenticator() 方法获取 https 协议的有效 url。在此示例中,我们将创建 URL 类的实例。使用 url.openConnection() 方法,我们获取 HttpURLConnection 实例。使用 setAuthenticator(),我们设置一个 null。由于authenticator为空,代码将抛出空指针异常,如下所示 -
package com.yxjc123;
import java.io.IOException;
import java.net.Authenticator;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpUrlConnectionDemo {
public static void main(String [] args) {
try {
URL url = new URL("https://www.yxjc123.com/index.htm?language=en#j2se");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setConnectTimeout(1000);
urlConnection.setAuthenticator(null);
urlConnection.connect();
System.out.println("Connected.");
urlConnection.disconnect();
System.out.println("Disconnected.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
让我们编译并运行上面的程序,这将产生以下结果 -
输出
Exception in thread "main" java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:233)
at java.base/sun.net.www.protocol.http.HttpURLConnection.setAuthenticator(HttpURLConnection.java:541)
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.setAuthenticator(HttpsURLConnectionImpl.java:503)
at com.yxjc123.HttpUrlConnectionDemo.main(HttpUrlConnectionDemo.java:14)