HTTP 請求協議簡單介紹

目錄

常見的 HTTP 響應頭字段

Java 示例代碼:發送 HTTP 請求并處理響應

代碼解釋:

運行結果:

文件名:

總結:


HTTP(HyperText Transfer Protocol)是用于客戶端與服務器之間通信的協議。它定義了客戶端(通常是瀏覽器)如何請求資源以及服務器如何響應這些請求。HTTP 協議是無狀態的,意味著每個請求都是獨立的,服務器不會記住客戶端的狀態。

在 HTTP 中,響應的狀態碼是非常重要的,它們幫助客戶端了解請求的處理結果。常見的 HTTP 狀態碼可以分為以下幾類:

  1. 1xx:臨時狀態碼

    • 表示請求已經接收,告訴客戶端應該繼續請求或者如果它已經完成,則忽略它。

    • 示例:100 Continue101 Switching Protocols

  2. 2xx:成功

    • 表示請求已經被成功接收,處理已完成。

    • 示例:200 OK201 Created204 No Content

  3. 3xx:重定向

    • 表示需要客戶端進一步操作才能完成請求。

    • 示例:301 Moved Permanently302 Found304 Not Modified

  4. 4xx:客戶端錯誤

    • 請求出現錯誤,責任在客戶端。例如請求了不存在的資源,客戶端未被授權,禁止訪問等。

    • 示例:400 Bad Request401 Unauthorized403 Forbidden404 Not Found

  5. 5xx:服務器錯誤

    • 請求處理發生錯誤,責任在服務端。

    • 示例:500 Internal Server Error502 Bad Gateway503 Service Unavailable

常見的 HTTP 響應頭字段
  • Content-Type:表示響應內容的類型,例如 text/htmlapplication/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(); // 關閉連接}}}
}

代碼解釋:

  1. HttpURLConnection:這是 Java 提供的用于處理 HTTP 請求和響應的類。

  2. setRequestMethod("GET"):設置請求方法為 GET,可以根據需要修改為 POST、PUT 等。

  3. setRequestProperty("Accept", "application/json"):設置請求頭,指定客戶端希望接收 JSON 格式的數據。

  4. getResponseCode():獲取 HTTP 響應的狀態碼。

  5. 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 應用是非常重要的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82899.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82899.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82899.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《100天精通Python——基礎篇 2025 第5天:鞏固核心知識,選擇題實戰演練基礎語法》

目錄 一、踏上Python之旅二、Python輸入與輸出三、變量與基本數據類型四、運算符五、流程控制 一、踏上Python之旅 1.想要輸出 I Love Python,應該使用()函數。 A.printf() B.print() C.println() D.Print() 在Python中想要在屏幕中輸出內容,應該使用print()函數…

求解一次最佳平方逼近多項式

例 設 f ( x ) 1 x 2 f(x)\sqrt{1x^2} f(x)1x2 ?,求 [ 0 , 1 ] [0,1] [0,1]上的一個一次最佳平方逼近多項式。 解 : d 0 ∫ 0 1 1 x 2 d x 1 2 ln ? ( 1 2 ) 2 2 ≈ 1.147 d_0\int_{0}^{1}\sqrt{1x^2}dx\frac{1}{2}\ln(1\sqrt{2})\frac{\sqrt…

在Ubuntu上使用 dd 工具制作U盤啟動盤

在Ubuntu上使用 dd 工具制作U盤啟動盤 在Linux系統中,dd 是一個功能強大且原生支持的命令行工具,常用于復制文件和轉換數據。它也可以用來將ISO鏡像寫入U盤,從而創建一個可啟動的操作系統安裝盤。雖然圖形化工具(如 Startup Disk…

如何理解OSI七層模型和TCP/IP四層模型?HTTP作為如何保存用戶狀態?多服務器節點下 Session方案怎么做

本篇概覽: OSI 七層模型是什么?每一層的作用是什么?TCP/IP四層模型和OSI七層模型的區別是什么? HTTP 本身是無狀態協議,HTTP如何保存用戶狀態? 能不能具體說一下Cookie的工作原理、生命周期、作用域?使用…

深入剖析 RocketMQ 中的 DefaultMQPushConsumerImpl:消息推送消費的核心實現

前言 在 Apache RocketMQ 的消息消費體系中,RocketMQ 提供了DefaultMQPushConsumer(推送消費)和DefaultMQPullConsumer(拉取消費)兩種主要消費方式。DefaultMQPushConsumer與DefaultMQPullConsumer在消息獲取方式&…

Linux編程:2、進程基礎知識

一、進程基本概念 1、進程與程序的區別 程序:靜態的可執行文件(如電腦中的vs2022安裝程序)。進程:程序的動態執行過程(如啟動后的vs2022實例),是操作系統分配資源的單位(如 CPU 時…

React Router 中 navigate 后瀏覽器返回按鈕不起作用的問題記錄

React Router 中 navigate 后瀏覽器返回按鈕不起作用的問題記錄 在使用 React Router(v6)開發項目時,我遇到了一個讓人困惑的問題: 當我從 /article 頁面使用 navigate("/article/next") 進行跳轉后,點擊瀏…

[面試精選] 0094. 二叉樹的中序遍歷

文章目錄 1. 題目鏈接2. 題目描述3. 題目示例4. 解題思路5. 題解代碼6. 復雜度分析 1. 題目鏈接 94. 二叉樹的中序遍歷 - 力扣(LeetCode) 2. 題目描述 給定一個二叉樹的根節點 root ,返回 它的 中序 遍歷 。 3. 題目示例 示例 1 : 輸入&…

Addressable-配置相關

1、Profile 概述窗口配置 主要用于配置Addressable打包(構建)加載AB包時使用的一些變量,這些變量定義了 在哪里保存打包(構建)的AB包運行時在哪里加載AB包 可以添加自定義變量,以便在打包加載時使用,之后在設置 組中…

aws(學習筆記第四十三課) s3_sns_sqs_lambda_chain

文章目錄 aws(學習筆記第四十三課) s3_sns_sqs_lambda_chain學習內容:1. 整體架構1.1 代碼鏈接1.2 整體架構1.3 測試代碼需要的修改1.3.1 unit test代碼中引入stack的修改1.3.2 test_outputs_created代碼中把錯誤的去掉 2. 代碼解析2.1 生成dead_letter_queue死信隊…

Python訓練營打卡Day43

kaggle找到一個圖像數據集,用cnn網絡進行訓練并且用grad-cam做可視化 進階:并拆分成多個文件 config.py import os# 基礎配置類 class Config:def __init__(self):# Kaggle配置self.kaggle_username "" # Kaggle用戶名self.kaggle_key &quo…

hive 3集成Iceberg 1.7中的Java版本問題

hive 3.1.3 集成iceberg 1.7.2創建Iceberg表報錯如下: Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/iceberg/mr/hive/HiveIcebergStorageHandler has been compiled by a more recent version of the Java Runtime …

文本切塊技術(Splitter)

為什么要分塊? 將長文本分解成適當大小的片段,以便于嵌入、索引和存儲,并提高檢索的精確度。 用ChunkViz工具可視化分塊 在線使用 ChunkViz github https://github.com/gkamradt/ChunkViz 如何確定大模型所能接受的最長上下文 可以從…

C++:用 libcurl 發送一封帶有附件的郵件

編寫mingw C 程序&#xff0c;用 libcurl 發送一封帶有附件的郵件 下面是一個使用 MinGW 編譯的 C 程序&#xff0c;使用 libcurl 發送帶附件的郵件。這個程序完全通過代碼實現 SMTP 郵件發送&#xff0c;不依賴外部郵件客戶端&#xff1a; // send_email.cpp #include <i…

tensorflow image_dataset_from_directory 訓練數據集構建

以數據集 https://www.kaggle.com/datasets/vipoooool/new-plant-diseases-dataset 為例 目錄結構 訓練圖像數據集要求&#xff1a; 主目錄下包含多個子目錄&#xff0c;每個子目錄代表一個類別。每個子目錄中存儲屬于該類別的圖像文件。 例如 main_directory/ ...cat/ ...…

遨游Spring AI:第一盤菜Hello World

Spring AI的正式版已經發布了&#xff0c;很顯然&#xff0c;接下來我們要做的事情就是寫一個Hello World。 總體思路就是在本地搭建一個簡單的大模型&#xff0c;然后編寫Spring AI代碼與模型進行交互。 分五步&#xff1a; 1. 安裝Ollama&#xff1b; 2. 安裝DeepSeek&…

華為云Flexus+DeepSeek征文|基于華為云Flexus X和DeepSeek-R1打造個人知識庫問答系統

目錄 前言 1 快速部署&#xff1a;一鍵搭建Dify平臺 1.1 部署流程詳解 1.2 初始配置與登錄 2 構建專屬知識庫 2.1 進入知識庫模塊并創建新庫 2.2 選擇數據源導入內容 2.3 上傳并識別多種文檔格式 2.4 文本處理與索引構建 2.5 保存并完成知識庫創建 3接入ModelArts S…

Java優化:雙重for循環

在工作中&#xff0c;經常性的會出現在兩張表中查找相同ID的數據&#xff0c;許多開發者會使用兩層for循環嵌套&#xff0c;雖然實現功能沒有問題&#xff0c;但是效率極低&#xff0c;一下是一個簡單的優化過程&#xff0c;代碼耗時湊從26856ms優化到了748ms。 功能場景 有兩…

Prompt Tuning:生成的模型文件有什么構成

一、為什么Prompt Tuning會生成模型文件? 1. Prompt Tuning的本質:優化可訓練的「提示參數」 核心邏輯:Prompt Tuning(提示調優)是一種輕量級的微調技術,僅優化模型輸入層的提示向量(Prompt Embedding)或少量額外參數,而非更新整個預訓練模型的權重。生成模型文件的原…

ARM SMMUv3簡介(一)

1.概述 SMMU&#xff08;System Memory Management Unit&#xff0c;系統內存管理單元&#xff09;是ARM架構中用于管理設備訪問系統內存的硬件模塊。SMMU和MMU的功能類似&#xff0c;都是將虛擬地址轉換成物理地址&#xff0c;不同的是MMU轉換的虛擬地址來自CPU&#xff0c;S…