成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

談談 Java HTTP 基本認證

開發 前端
我們看到了什么是 HTTP 基本認證以及它如何工作。我們通過為Java HttpClient 設置一個認證器,使用了基本認證。另外我們使用了不同的方法,通過手動設置HTTP頭來進行認證。

大家好,我是指北君。

今天我們將看一下 HTTP 基本認證。指北君將會講講它是如何工作的,并且一步步教大家如何使用。

什么是 HTTP 基本認證

HTTP 基本認證是一種簡單的認證方法。客戶端可以通過用戶名和密碼進行認證。這些憑證以特定的格式在 Authorization HTTP Header 中發送。一般它以 Basic 關鍵字開始,后面是一個 base64 編碼的用戶名:密碼值。冒號字符在這里很重要。頭部應該嚴格遵循這個格式。

例如,要用 javanorth 用戶名和 http 密碼進行認證,我們必須發送這個 Header。

Basic amF2YW5vcnRoOmh0dHA=

我們可以通過使用 base64 解碼器和檢查解碼的結果來驗證。

Java HttpClient

在 Java 9 中引入了一個新的 HttpClient 模塊,它在 Java 11 中得到了標準化。下面代碼部分指北君我將使用 Java 17,我們可以簡單地從 java.net.http 包中導入它,無需任何額外的配置或依賴。

讓我們從執行一個簡單的GET請求開始,現在不需要任何認證。

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder().GET()
.uri(new URI("https://www.javanorth.cn/get")).build();

HttpResponse<String> response = client.send(request, BodyHandlers.ofString());

logger.info("Status {}", response.statusCode());
  • 首先,我們創建一個 HttpClient 對象,它可以用來執行 HTTP 請求。
  • 其次,我們使用構建器設計模式創建一個 HttpRequest 對象。GET 方法設置請求的 HTTP 方法。uri 方法設置了我們想發送請求的 URL。
  • 之后,我們使用我們的客戶端發送該請求。發送方法的第二個參數是一個響應體處理程序。這告訴客戶端,我們想把響應體當作一個字符串。

讓我們運行我們的應用程序并檢查日志。輸出應該是這樣的。

INFO cn.javanorth.httpclient.basicauthentication.HttpClientBasicAuthentication - Status 200

我們看到 HTTP 狀態是 200,意味著我們的請求是成功的。在這之后,讓我們看看我們如何處理認證。

使用 HttpClient 認證器

在我們配置認證之前,我們需要一個URL來測試它。讓我們使用一個需要認證的Postman Echo端點。首先,將之前的URL改為這個,然后再次運行應用程序。

HttpRequest request = HttpRequest.newBuilder().GET()
.uri(new URI("https://www.javanorth.cn/basic-auth")).build();

我們檢查一下日志,找找狀態代碼。這次我們收到 HTTP 狀態 401 "未授權"。這個響應代碼意味著端點需要認證,但客戶端沒有發送任何憑證。

我們修改一下代碼,使其發送所需的認證數據。我們可以通過配置 HttpClient Builder 來做到這一點,我們的客戶端將使用我們設置的憑證。這個端點接收用戶名 "javanorth"和密碼 "password"。讓我們為我們的客戶端添加一個認證器。

HttpClient client = HttpClient.newBuilder()
.authenticator(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("javanorth", "password".toCharArray());
}
})
.build();

讓我們再次運行該應用程序。現在請求成功了,我們收到HTTP狀態200。

使用 HTTP 頭文件進行認證

我們可以使用另一種方法來訪問需要認證的端點。我們從前面的章節中了解到授權頭是如何構建的,所以我們可以手動設置其值。盡管這必須在每個請求中進行,而不是通過認證器設置一次。

我們刪除認證器,看看如何設置請求頭。我們需要使用base64編碼來構建頭文件的值。

private static final String getBasicAuthenticationHeader(String username, String password) {
String valueToEncode = username + ":" + password;
return "Basic " + Base64.getEncoder().encodeToString(valueToEncode.getBytes());
}

讓我們為授權頭設置這個值,并運行該應用程序。

HttpRequest request = HttpRequest.newBuilder()
.GET()
.uri(new URI("https://www.javanorth.cn/basic-auth"))
.header("Authorization", getBasicAuthenticationHeader("postman", "password"))
.build();

我們的請求是成功的,這意味著我們正確地構建和設置了頭信息值。

總結

在這個簡短的文章中,我們看到了什么是 HTTP 基本認證以及它如何工作。我們通過為Java HttpClient 設置一個認證器,使用了基本認證。另外我們使用了不同的方法,通過手動設置HTTP頭來進行認證。

責任編輯:武曉燕 來源: Java技術指北
相關推薦

2020-09-25 11:50:12

前后端分離架構Web

2010-06-08 12:31:15

HTTP協議實體

2010-03-03 16:40:55

Python HTTP

2011-04-20 10:32:44

java反編譯

2019-04-16 10:05:11

2023-04-19 07:39:55

RustHTTP服務器

2009-09-24 09:55:15

Java Hibern

2022-06-07 08:31:44

JavaUnsafe

2022-01-07 18:53:51

元素服務端數據

2024-08-23 09:02:56

2019-12-16 09:21:14

HTTPAPI認證

2018-04-17 16:29:24

Java面試HTTP

2012-02-08 10:12:19

Java反射

2012-03-26 11:32:45

Java

2009-06-09 12:58:07

華為Portal認證WX3024

2009-10-27 14:25:08

2009-10-10 16:57:33

布線工藝要求

2011-06-17 17:37:16

JavaSQL Server

2009-07-14 14:12:14

Javascript

2011-05-27 16:57:13

Android widget
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩色图视频 | 91在线精品播放 | 二区视频 | 中文字幕人成乱码在线观看 | 高清一区二区三区 | 我要看一级片 | 久久久精品一区二区三区四季av | 亚洲一区视频在线播放 | 国产精品国产成人国产三级 | 欧美精品在线播放 | 在线观看不卡av | 成人自拍av| 九色在线视频 | 日韩免费在线 | 久久国产精品视频 | 一区二区在线不卡 | 亚洲成av| 美女逼网站 | 在线中文字幕日韩 | 日本精品一区 | 久久免费观看一级毛片 | 黄免费观看视频 | 国产免费一区二区 | 91视频一区二区三区 | 欧美一级在线观看 | 欧美福利三区 | 一区二区亚洲 | 亚洲精品一区二区三区中文字幕 | 99热在这里只有精品 | 久久精品久久久久久 | www日本在线 | 欧美一级在线视频 | 99精品久久 | 福利片在线观看 | 欧美日韩高清在线一区 | 99九九视频 | 国产精品成av人在线视午夜片 | 欧美网址在线观看 | 国产亚洲一区二区三区在线观看 | 91精品国产91久久综合桃花 | 黄色一级大片在线免费看产 |