Servletler - Http Durum Kodları

HTTP isteğinin ve HTTP yanıt mesajlarının biçimi benzerdir ve aşağıdaki yapıya sahip olacaktır:

  • Bir başlangıç ​​durum satırı + CRLF (Satır Başı + Satır Besleme yani Yeni Satır)

  • Sıfır veya daha fazla başlık satırı + CRLF

  • Boş bir satır, yani bir CRLF

  • Dosya, sorgu verileri veya sorgu çıkışı gibi isteğe bağlı bir mesaj gövdesi.

Örneğin, bir sunucu yanıt başlığı aşağıdaki gibi görünür -

HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
   (Blank Line)
<!doctype ...>
<html>
   <head>...</head>
   <body>
      ...
   </body>
</html>

Durum satırı, HTTP sürümünden (örnekte HTTP / 1.1), bir durum kodundan (örnekte 200) ve durum koduna karşılık gelen çok kısa bir mesajdan (örnekte OK) oluşur.

Aşağıda, Web Sunucusundan döndürülebilecek HTTP durum kodlarının ve ilişkili mesajların bir listesi bulunmaktadır -

Kodu İleti Açıklama
100 Devam et İsteğin sadece bir kısmı sunucu tarafından alındı, ancak reddedilmediği sürece istemcinin talebe devam etmesi gerekiyor
101 Protokolleri Değiştirme Sunucu protokolü değiştirir.
200 tamam İstek tamam
201 Oluşturuldu İstek tamamlandı ve yeni bir kaynak oluşturuldu
202 Kabul edilmiş İstek işleme alınmak üzere kabul edildi, ancak işlem tamamlanmadı.
203 Yetkilendirilmemiş Bilgiler  
204 İçerik yok  
205 İçeriği Sıfırla  
206 Kısmi İçerik  
300 Çoklu seçimler Bir bağlantı listesi. Kullanıcı bir bağlantı seçebilir ve o konuma gidebilir. Maksimum beş adres
301 Kalıcı Olarak Taşındı İstenen sayfa yeni bir url'ye taşındı
302 Bulundu İstenen sayfa geçici olarak yeni bir url'ye taşındı
303 Diğerlerini Gör İstenen sayfa farklı bir url altında bulunabilir
304 Modifiye edilmemiş  
305 Proxy kullan  
306 Kullanılmayan Bu kod önceki bir sürümde kullanıldı. Artık kullanılmıyor, ancak kod ayrılmıştır
307 Geçici Yeniden Yönlendirme İstenen sayfa geçici olarak yeni bir url'ye taşındı.
400 Geçersiz istek Sunucu isteği anlamadı
401 Yetkisiz İstenen sayfanın bir kullanıcı adı ve şifreye ihtiyacı var
402 ödeme gerekli Bu kodu henüz kullanamazsınız
403 Yasak İstenen sayfaya erişim yasaktır
404 Bulunamadı Sunucu istenen sayfayı bulamıyor.
405 izinsiz metod Talepte belirtilen yönteme izin verilmiyor.
406 Kabul edilemez Sunucu, yalnızca istemci tarafından kabul edilmeyen bir yanıt oluşturabilir.
407 Proxy Kimlik Doğrulaması Gerekli Bu isteğin yerine getirilebilmesi için önce bir proxy sunucusuyla kimlik doğrulamanız gerekir.
408 İstek zaman aşımına uğradı İstek, sunucunun beklemeye hazırlandığından daha uzun sürdü.
409 Fikir ayrılığı Bir çakışma nedeniyle istek tamamlanamadı.
410 Gitti İstenen sayfa artık mevcut değil.
411 Uzunluk Gerekli "İçerik Uzunluğu" tanımlanmadı. Sunucu, onsuz isteği kabul etmeyecektir.
412 Ön Koşul Başarısız İstekte belirtilen ön koşul, sunucu tarafından yanlış olarak değerlendirildi.
413 girilen veri çok fazla Sunucu, isteği kabul etmeyecek çünkü istek varlığı çok büyük.
414 URL isteği Çok Uzun URL çok uzun olduğu için sunucu isteği kabul etmeyecek. Bir "gönderi" isteğini uzun bir sorgu bilgisine sahip bir "alma" isteğine dönüştürdüğünüzde gerçekleşir.
415 Desteklenmeyen Medya Türü Medya türü desteklenmediği için sunucu isteği kabul etmeyecek.
417 Beklenti Başarısız  
500 İç Sunucu Hatası İstek tamamlanmadı. Sunucu beklenmedik bir koşulla karşılaştı.
501 Uygulanmadı İstek tamamlanmadı. Sunucu, gerekli işlevselliği desteklemedi.
502 Hatalı Ağ Geçidi İstek tamamlanmadı. Sunucu, yukarı akış sunucusundan geçersiz bir yanıt aldı.
503 hizmet kullanılamıyor İstek tamamlanmadı. Sunucu geçici olarak aşırı yükleniyor veya çalışmıyor.
504 Ağ Geçidi Zaman Aşımı Ağ geçidi zaman aşımına uğradı.
505 HTTP Sürümü Desteklenmiyor Sunucu, "http protokolü" sürümünü desteklemiyor.

HTTP Durum Kodunu Ayarlama Yöntemleri

Sunucu uygulaması programınızda HTTP Durum Kodunu ayarlamak için aşağıdaki yöntemler kullanılabilir. Bu yöntemler HttpServletResponse nesnesiyle kullanılabilir.

Sr.No. Yöntem ve Açıklama
1

public void setStatus ( int statusCode )

Bu yöntem, rastgele bir durum kodu ayarlar. SetStatus yöntemi, bağımsız değişken olarak bir int (durum kodu) alır. Yanıtınız özel bir durum kodu ve bir belge içeriyorsa, PrintWriter ile herhangi bir içeriği gerçekten döndürmeden önce setStatus'u çağırdığınızdan emin olun .

2

public void sendRedirect(String url)

Bu yöntem , yeni belgenin URL'sini veren bir Konum başlığı ile birlikte bir 302 yanıtı oluşturur.

3

public void sendError(int code, String message)

Bu yöntem, bir HTML belgesi içinde otomatik olarak biçimlendirilen ve istemciye gönderilen kısa bir mesajla birlikte bir durum kodu (genellikle 404) gönderir.

HTTP Durum Kodu Örneği

Aşağıda, istemci tarayıcısına 407 hata kodu gönderecek örnek verilmiştir ve tarayıcı size "Kimlik doğrulaması gerekiyor !!!" İleti.

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

// Extend HttpServlet class
public class showError extends HttpServlet {
 
   // Method to handle GET method request.
   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // Set error code and reason.
      response.sendError(407, "Need authentication!!!" );
   }
   
   // Method to handle POST method request.
   public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      doGet(request, response);
   }
}

Şimdi yukarıdaki sunucu uygulamasını çağırmak aşağıdaki sonucu görüntüleyecektir -

HTTP Status 407 - Need authentication!!!

type Status report

messageNeed authentication!!!

descriptionThe client must first authenticate itself with the proxy (Need authentication!!!).

Apache Tomcat/5.5.29