在 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中文網其他相關文章!

類加載器通過統一的類文件格式、動態加載、雙親委派模型和平台無關的字節碼,確保Java程序在不同平台上的一致性和兼容性,實現平台獨立性。

Java編譯器生成的代碼是平台無關的,但最終執行的代碼是平台特定的。 1.Java源代碼編譯成平台無關的字節碼。 2.JVM將字節碼轉換為特定平台的機器碼,確保跨平台運行但性能可能不同。

多線程在現代編程中重要,因為它能提高程序的響應性和資源利用率,並處理複雜的並發任務。 JVM通過線程映射、調度機制和同步鎖機制,在不同操作系統上確保多線程的一致性和高效性。

Java的平台獨立性是指編寫的代碼可以在任何安裝了JVM的平台上運行,無需修改。 1)Java源代碼編譯成字節碼,2)字節碼由JVM解釋執行,3)JVM提供內存管理和垃圾回收功能,確保程序在不同操作系統上運行。

Javaapplicationscanindeedencounterplatform-specificissuesdespitetheJVM'sabstraction.Reasonsinclude:1)Nativecodeandlibraries,2)Operatingsystemdifferences,3)JVMimplementationvariations,and4)Hardwaredependencies.Tomitigatethese,developersshould:1)Conduc

云计算显著提升了Java的平台独立性。1)Java代码编译为字节码,由JVM在不同操作系统上执行,确保跨平台运行。2)使用Docker和Kubernetes部署Java应用,提高可移植性和可扩展性。

Java'splatformindependenceallowsdeveloperstowritecodeonceandrunitonanydeviceorOSwithaJVM.Thisisachievedthroughcompilingtobytecode,whichtheJVMinterpretsorcompilesatruntime.ThisfeaturehassignificantlyboostedJava'sadoptionduetocross-platformdeployment,s

容器化技術如Docker增強而非替代Java的平台獨立性。 1)確保跨環境的一致性,2)管理依賴性,包括特定JVM版本,3)簡化部署過程,使Java應用更具適應性和易管理性。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

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

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

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

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