首頁 Java java教程 Java HTTP 程式碼指南:如何了解伺服器想要從您那裡得到什麼?

Java HTTP 程式碼指南:如何了解伺服器想要從您那裡得到什麼?

Nov 10, 2024 am 08:54 AM

在 HTTP 程式碼的世界中,每個伺服器回應就像來自宇宙另一端的訊息。您發送了一個請求,現在這個神秘的代碼出現在螢幕上。這是什麼意思?我們該如何理解呢?讓我們弄清楚如何捕獲來自伺服器的訊號而不陷入陷阱。

為什麼他們甚至用程式碼來回答我們?

伺服器就像一位好老教授。他不會每次都寫長信。它在回應中使用 HTTP 代碼或三位數訊號來幫助您(和其他開發人員)了解正在發生的情況。他們被分為五個類別,如受人尊敬的年齡段,從明智的信息型(1xx)到反复無常的錯誤型(4xx和5xx)。

這是我們的主要角色:

  • 1xx:服務生若有所思地喝著咖啡,說:「是的,是的,我正在工作,等等......」
  • 2xx:一切都很酷,請求完成,伺服器很高興。
  • 3xx:「哦,聽著,你走錯路了。讓我給你重定向!」
  • 4xx:伺服器憤慨:「你誤會我了,你到底想要什麼?」
  • 5xx:哦,伺服器好像丟掉了一些重要的東西,然後變得混亂了。

如何判斷伺服器是否滿意?代碼 2xx
服務員就像任何內向的人一樣,如果你做的一切都正確的話,他會很高興。以下是他的認可訊號:

  • 200 OK - 「一切都按部就班!」請求已處理,您可以高興了。
  • 201 已建立 - 「新內容已創建,抓住它!」作為獎勵,這可能是資料庫中的新條目。
  • 204 無內容 - 「一切都準備好了,但我沒有什麼可展示的。」例如,您刪除了某些內容,但那裡沒有任何內容可顯示。

Путеводитель по HTTP-кодам в Java: Как понять, что сервер от тебя хочет?

Java 範例:如何得到這個神奇的「OK」?

HttpURLConnection connection = (HttpURLConnection) new URL("https://easy.java.com/data").openConnection();
connection.setRequestMethod("GET");

if (connection.getResponseCode() == 200) {
    System.out.println("Сервер сказал ОК! Тянем данные...");
}

登入後複製
登入後複製

如果伺服器不高興怎麼辦?代碼 4​​xx

這裡可能已經存在問題,例如您不小心**開錯了門**。

Путеводитель по HTTP-кодам в Java: Как понять, что сервер от тебя хочет?

  • 400 錯誤要求 - 「您的要求顯然做錯了。」
  • 401 未經授權 - 「你是誰?我不認識你。」看來您需要密碼!
  • 402 需要付款。該程式碼保留用於付費存取某些資源,但幾乎從未使用過。如果使用它,聽起來會像:「先付帳單,然後獲得訪問權限!」也許服務員會拿著收銀機站在入口處。
  • 403 Forbidden - 「嘿,即使有密碼你也進不去。」顯然,存取錯誤。
  • 404 Not Found - 「它在某個地方......但它消失在某個地方。」這段程式碼簡直就是經典。
  • 409 衝突 - 「你和其他人想要一樣的東西。誰會贏?」
  • 範例:伺服器發出抱怨時處理錯誤
int responseCode = connection.getResponseCode();

if (responseCode == 404) {
    System.out.println("Сервер говорит, что ничего не нашел.");
} else if (responseCode == 401) {
    System.out.println("Ой, кажется, сюда нужен пароль.");
}

登入後複製
登入後複製

當服務器舉辦搖滾音樂會時:代碼 5xx

然後伺服器就受不了了。他想要工作,但某個地方明顯出了問題。

  • 500 內部伺服器錯誤 - 想像伺服器是一位搖滾明星,他在音樂會中突然丟失了一個音符,被迫承認失敗:「出了問題!」這是伺服器本身不明白發生了什麼時的標準反應。在程式碼中,它通常看起來像“一般錯誤,某些東西不起作用”,並且在日誌中您可以看到類似“發生未知錯誤”的內容。
  • 501 Not Implemented - 此程式碼表示伺服器不知道如何處理目前請求。你可以把他想像成 IT 專家,被要求修理廚房的水龍頭。他拿著鑰匙站起來,看著水龍頭說:「這不是我的專長!」如果客戶端發出伺服器不支援的請求,通常會發生這種情況。
  • 502 Bad Gateway 這裡中間伺服器(網關或代理)嘗試聯繫另一台伺服器,但它回應了一些難以理解的內容或根本沒有回應
  • 503 服務不可用 - 「哦,我現在不行,給我五分鐘。」要么服務已關閉,要么伺服器已滿。如果伺服器可以休息幾天,這將是他最喜歡的程式碼。
  • 504 Gateway Timeout 此程式碼表示伺服器沒有等待另一臺本應回應請求的伺服器的回應。想像一下,伺服器正在等待從未到來的回應。結果,伺服器對客戶端說:「好吧,我等了又等,但什麼也沒得到。」

Путеводитель по HTTP-кодам в Java: Как понять, что сервер от тебя хочет?

使用 RestTemplate:如何在 Spring 中與伺服器通信

當您使用 Spring 時,您有一個用於請求的 RestTemplate 和 WebClient。它們允許您像真正的漁夫一樣捕獲伺服器響應。

RestTemplate:捕獲伺服器回應

HttpURLConnection connection = (HttpURLConnection) new URL("https://easy.java.com/data").openConnection();
connection.setRequestMethod("GET");

if (connection.getResponseCode() == 200) {
    System.out.println("Сервер сказал ОК! Тянем данные...");
}

登入後複製
登入後複製

針對非同步愛好者的 WebClient

WebClient 是一款適合那些不害怕以「等待,但不立即」風格工作的人的工具。就好像你在說:「伺服器,盡力而為,我現在就等。」

int responseCode = connection.getResponseCode();

if (responseCode == 404) {
    System.out.println("Сервер говорит, что ничего не нашел.");
} else if (responseCode == 401) {
    System.out.println("Ой, кажется, сюда нужен пароль.");
}

登入後複製
登入後複製

建議

檢查超時 - 有時服務器會凍結,你應該準時吃午餐。設定等待時間。
不要忘記日誌記錄 - 每個代碼都很重要!記錄答案,您將始終能夠了解出了什麼問題。
與 4xx 和 5xx 合作 - 從錯誤中學習。您處理此類回應的越好,您的應用程式就會越穩健。

結論

伺服器是一個反覆無常的生物,每次你從它收到程式碼時,就像你在解謎題一樣。但是,了解基本程式碼及其含義,您可以快速了解您的要求!

記住:HTTP 程式碼是 Java 程式碼和伺服器之間的通訊語言。知道如何閱讀它,伺服器就會永遠開心。

以上是Java HTTP 程式碼指南:如何了解伺服器想要從您那裡得到什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1654
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1252
29
C# 教程
1225
24
公司安全軟件導致應用無法運行?如何排查和解決? 公司安全軟件導致應用無法運行?如何排查和解決? Apr 19, 2025 pm 04:51 PM

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

如何將姓名轉換為數字以實現排序並保持群組中的一致性? 如何將姓名轉換為數字以實現排序並保持群組中的一致性? Apr 19, 2025 pm 11:30 PM

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

如何優雅地獲取實體類變量名構建數據庫查詢條件? 如何優雅地獲取實體類變量名構建數據庫查詢條件? Apr 19, 2025 pm 11:42 PM

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

如何使用MapStruct簡化系統對接中的字段映射問題? 如何使用MapStruct簡化系統對接中的字段映射問題? Apr 19, 2025 pm 06:21 PM

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

IntelliJ IDEA是如何在不輸出日誌的情況下識別Spring Boot項目的端口號的? IntelliJ IDEA是如何在不輸出日誌的情況下識別Spring Boot項目的端口號的? Apr 19, 2025 pm 11:45 PM

在使用IntelliJIDEAUltimate版本啟動Spring...

Java對像如何安全地轉換為數組? Java對像如何安全地轉換為數組? Apr 19, 2025 pm 11:33 PM

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

電商平台SKU和SPU數據庫設計:如何兼顧用戶自定義屬性和無屬性商品? 電商平台SKU和SPU數據庫設計:如何兼顧用戶自定義屬性和無屬性商品? Apr 19, 2025 pm 11:27 PM

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...

如何利用Redis緩存方案高效實現產品排行榜列表的需求? 如何利用Redis緩存方案高效實現產品排行榜列表的需求? Apr 19, 2025 pm 11:36 PM

Redis緩存方案如何實現產品排行榜列表的需求?在開發過程中,我們常常需要處理排行榜的需求,例如展示一個�...

See all articles