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

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

Barbara Streisand
Barbara Streisand原創
2024-11-10 08:54:03397瀏覽

在 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