Java HttpURLConnection 类

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)