Java HTTP 程式碼指南:如何了解伺服器想要從您那裡得到什麼?
在 HTTP 程式碼的世界中,每個伺服器回應就像來自宇宙另一端的訊息。您發送了一個請求,現在這個神秘的代碼出現在螢幕上。這是什麼意思?我們該如何理解呢?讓我們弄清楚如何捕獲來自伺服器的訊號而不陷入陷阱。
為什麼他們甚至用程式碼來回答我們?
伺服器就像一位好老教授。他不會每次都寫長信。它在回應中使用 HTTP 代碼或三位數訊號來幫助您(和其他開發人員)了解正在發生的情況。他們被分為五個類別,如受人尊敬的年齡段,從明智的信息型(1xx)到反复無常的錯誤型(4xx和5xx)。
這是我們的主要角色:
- 1xx:服務生若有所思地喝著咖啡,說:「是的,是的,我正在工作,等等......」
- 2xx:一切都很酷,請求完成,伺服器很高興。
- 3xx:「哦,聽著,你走錯路了。讓我給你重定向!」
- 4xx:伺服器憤慨:「你誤會我了,你到底想要什麼?」
- 5xx:哦,伺服器好像丟掉了一些重要的東西,然後變得混亂了。
如何判斷伺服器是否滿意?代碼 2xx
服務員就像任何內向的人一樣,如果你做的一切都正確的話,他會很高興。以下是他的認可訊號:
- 200 OK - 「一切都按部就班!」請求已處理,您可以高興了。
- 201 已建立 - 「新內容已創建,抓住它!」作為獎勵,這可能是資料庫中的新條目。
- 204 無內容 - 「一切都準備好了,但我沒有什麼可展示的。」例如,您刪除了某些內容,但那裡沒有任何內容可顯示。
Java 範例:如何得到這個神奇的「OK」?
HttpURLConnection connection = (HttpURLConnection) new URL("https://easy.java.com/data").openConnection(); connection.setRequestMethod("GET"); if (connection.getResponseCode() == 200) { System.out.println("Сервер сказал ОК! Тянем данные..."); }
如果伺服器不高興怎麼辦?代碼 4xx
這裡可能已經存在問題,例如您不小心**開錯了門**。
- 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 此程式碼表示伺服器沒有等待另一臺本應回應請求的伺服器的回應。想像一下,伺服器正在等待從未到來的回應。結果,伺服器對客戶端說:「好吧,我等了又等,但什麼也沒得到。」
使用 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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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