目錄
常見的 HTTP 響應頭字段
Java 示例代碼:發送 HTTP 請求并處理響應
代碼解釋:
運行結果:
文件名:
總結:
HTTP(HyperText Transfer Protocol)是用于客戶端與服務器之間通信的協議。它定義了客戶端(通常是瀏覽器)如何請求資源以及服務器如何響應這些請求。HTTP 協議是無狀態的,意味著每個請求都是獨立的,服務器不會記住客戶端的狀態。
在 HTTP 中,響應的狀態碼是非常重要的,它們幫助客戶端了解請求的處理結果。常見的 HTTP 狀態碼可以分為以下幾類:
-
1xx:臨時狀態碼
-
表示請求已經接收,告訴客戶端應該繼續請求或者如果它已經完成,則忽略它。
-
示例:
100 Continue
,101 Switching Protocols
。
-
-
2xx:成功
-
表示請求已經被成功接收,處理已完成。
-
示例:
200 OK
,201 Created
,204 No Content
。
-
-
3xx:重定向
-
表示需要客戶端進一步操作才能完成請求。
-
示例:
301 Moved Permanently
,302 Found
,304 Not Modified
。
-
-
4xx:客戶端錯誤
-
請求出現錯誤,責任在客戶端。例如請求了不存在的資源,客戶端未被授權,禁止訪問等。
-
示例:
400 Bad Request
,401 Unauthorized
,403 Forbidden
,404 Not Found
。
-
-
5xx:服務器錯誤
-
請求處理發生錯誤,責任在服務端。
-
示例:
500 Internal Server Error
,502 Bad Gateway
,503 Service Unavailable
。
-
常見的 HTTP 響應頭字段
-
Content-Type:表示響應內容的類型,例如
text/html
或application/json
。 -
Content-Length:表示響應內容的長度(字節數)。
-
Content-Encoding:表示響應內容使用的壓縮算法,例如
gzip
。 -
Cache-Control:指示客戶端如何緩存響應內容,例如
max-age=300
表示可以最多緩存 300 秒。 -
Set-Cookie:告知瀏覽器為當前頁面設置
cookie
。
Java 示例代碼:發送 HTTP 請求并處理響應
import java.io.*;
import java.net.*;
import java.nio.charset.StandardCharsets;public class HttpRequestExample {public static void main(String[] args) {String urlString = "https://jsonplaceholder.typicode.com/posts"; // 示例 URLHttpURLConnection connection = null;try {// 創建 URL 對象URL url = new URL(urlString);// 打開連接connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET"); // 設置請求方法為 GETconnection.setConnectTimeout(5000); // 設置連接超時為 5 秒connection.setReadTimeout(5000); // 設置讀取超時為 5 秒connection.setRequestProperty("Accept", "application/json"); // 設置請求頭// 獲取響應代碼int responseCode = connection.getResponseCode();System.out.println("HTTP Response Code: " + responseCode);// 讀取響應內容BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8));String inputLine;StringBuilder response = new StringBuilder();while ((inputLine = in.readLine()) != null) {response.append(inputLine);}in.close();// 打印響應內容System.out.println("Response Content: ");System.out.println(response.toString());} catch (IOException e) {e.printStackTrace();} finally {if (connection != null) {connection.disconnect(); // 關閉連接}}}
}
代碼解釋:
-
HttpURLConnection:這是 Java 提供的用于處理 HTTP 請求和響應的類。
-
setRequestMethod("GET"):設置請求方法為 GET,可以根據需要修改為 POST、PUT 等。
-
setRequestProperty("Accept", "application/json"):設置請求頭,指定客戶端希望接收 JSON 格式的數據。
-
getResponseCode():獲取 HTTP 響應的狀態碼。
-
getInputStream():讀取響應體,返回的
InputStream
可以用來獲取響應的內容。
運行結果:
如果你運行該程序,假設 URL https://jsonplaceholder.typicode.com/posts
返回的是一個 JSON 數組,那么運行輸出可能如下:
HTTP Response Code: 200
Response Content:
[{"userId": 1,"id": 1,"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit","body": "quia et suscipit\nsuscipit..."
},
{"userId": 1,"id": 2,"title": "qui est esse","body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque..."
},
...]
文件名:
-
HttpRequestExample.java
:Java 文件名。
總結:
通過上面的示例代碼,你可以快速了解如何在 Java 中發送 HTTP 請求,并處理響應。你可以根據實際需求修改請求方法、請求頭、以及請求體等內容。此外,了解 HTTP 響應的狀態碼和頭字段對于調試和優化 Web 應用是非常重要的。