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