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

在 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
JVM中的類加載程序子系統如何促進平台獨立性?JVM中的類加載程序子系統如何促進平台獨立性?Apr 23, 2025 am 12:14 AM

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

Java編譯器會產生特定於平台的代碼嗎?解釋。Java編譯器會產生特定於平台的代碼嗎?解釋。Apr 23, 2025 am 12:09 AM

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

JVM如何處理不同操作系統的多線程?JVM如何處理不同操作系統的多線程?Apr 23, 2025 am 12:07 AM

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

在Java的背景下,'平台獨立性”意味著什麼?在Java的背景下,'平台獨立性”意味著什麼?Apr 23, 2025 am 12:05 AM

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

Java應用程序仍然可以遇到平台特定的錯誤或問題嗎?Java應用程序仍然可以遇到平台特定的錯誤或問題嗎?Apr 23, 2025 am 12:03 AM

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

雲計算如何影響Java平台獨立性的重要性?雲計算如何影響Java平台獨立性的重要性?Apr 22, 2025 pm 07:05 PM

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

Java的平台獨立性在廣泛採用中扮演著什麼角色?Java的平台獨立性在廣泛採用中扮演著什麼角色?Apr 22, 2025 pm 06:53 PM

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

容器化技術(例如Docker)如何影響Java平台獨立性的重要性?容器化技術(例如Docker)如何影響Java平台獨立性的重要性?Apr 22, 2025 pm 06:49 PM

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

See all articles

熱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

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

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

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

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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