Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误与异常

Java 多线程

Java 同步

Java 网络编程

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java APIs 与框架

Java 类引用

Java 有用资源

Java - HttpURLConnection setAuthenticator() 方法



Java HttpURLConnection setAuthenticator() 方法允许为 HttpURLConnection 提供一个身份验证器,当通过 HTTP 协议请求身份验证时使用。如果没有提供身份验证器,将使用默认身份验证器。

声明

以下是 java.net.HttpURLConnection.setAuthenticator() 方法的声明

public void setAuthenticator(Authenticator auth)

参数

auth − 此 HttpURLConnection 应使用的身份验证器。

返回值

异常

UnsupportedOperationException −如果底层实现不支持设置身份验证器。

IllegalStateException −如果 URLConnection 已连接。

NullPointerException −如果提供的 auth 为 null。

示例 1

以下示例演示了针对具有 https 协议的有效 url 使用 Java HttpURLConnection setAuthenticator() 方法。在此示例中,我们正在创建一个 URL 类的实例。使用 url.openConnection() 方法,我们获取 HttpURLConnection 实例。使用 setAuthenticator(),我们设置一个默认身份验证器。由于默认身份验证器为 null,代码将抛出空指针异常,如下所示:

package com.tutorialspoint;

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://tutorialspoint.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.tutorialspoint.HttpUrlConnectionDemo.main(HttpUrlConnectionDemo.java:14)

示例 2

以下示例演示了针对具有 https 协议的有效 url 使用 Java HttpURLConnection setAuthenticator() 方法。在此示例中,我们正在创建一个 URL 类的实例。使用 url.openConnection() 方法,我们获取 HttpURLConnection 实例。使用 setAuthenticator(),我们设置 null。由于身份验证器为 null,代码将抛出空指针异常,如下所示:

package com.tutorialspoint;

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://tutorialspoint.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.tutorialspoint.HttpUrlConnectionDemo.main(HttpUrlConnectionDemo.java:14)
java_httpurlconnection.htm
广告