English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

كودات حالة HTTP Servlet

يكون شكل رسائل الطلب HTTP وردود HTTP مشابهين، والهيكل كالتالي:

  • سطر الحالة الأولي مع رمز النسخ الاحتياطي مع الرمز الناقص (النسخ الاحتياطي + الناقص)

  • عدد صفر أو أكثر من سطور العناوين مع رمز النسخ الاحتياطي مع الرمز الناقص

  • خط فاصل فارغ، أي رمز النسخ الاحتياطي مع الرمز الناقص

  • جسم رسالة اختياري، مثل ملف، بيانات استعلام أو مخرجات استعلام

على سبيل المثال، رؤوس الاستجابة الخاصة بالخادم كالتالي:

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

سطر الحالة يشمل إصدار HTTP (في هذا المثال HTTP/1.1)، رمز حالة (في هذا المثال 200) ورسالة قصيرة تتناسب مع الرمز (في هذا المثال OK).

إليك قائمة من HTTP��态 الرجوعية المحتملة من خادم الويب ومعلومات ذات صلة:

كودرسالةوصف
100Continueتم استلام جزء من الطلب من قبل الخادم، ولكن يجب على العملاء المضيفين مواصلة الطلب طالما لم يتم رفضه.
101Switching Protocolsاستبدال البروتوكول.
200OKنجح الطلب.
201Createdالطلب كامل ويقوم بإنشاء ميزة جديدة.
202Acceptedتم قبول الطلب ومعالجته، ولكن المعالجة غير كاملة.
203Non-authoritative Information 
204No Content 
205Reset Content 
206Partial Content 
300Multiple Choicesقائمة الروابط. يمكن للمستخدم اختيار رابط، والوصول إلى هذا الموقع. أقصى خمس عناوين.
301متحول إلى permanentlyالصفحة المطلوبة قد انتقلت إلى عنوان URL جديد.
302وجدتم نقل الصفحة المطلوبة مؤقتاً إلى URL جديد.
303انظر إلى آخريمكن العثور على الصفحة المطلوبة في URL آخر مختلف.
304لم يتم تعديل 
305استخدم وسيط 
306غير مستخدماستخدم هذا الرقم في إصدار سابق. لم يعد يستخدم الآن، ولكن الرقم لا يزال محفوظاً.
307إعادة توجيه مؤقتتم نقل الصفحة المطلوبة مؤقتاً إلى URL جديد.
400طلب سيءلا يفهم الخادمة الطلب.
401غير مسموح بهالصفحة المطلوبة تتطلب اسم المستخدم وكلمة المرور.
402إعداد الدفع مطلوبلا يمكنك استخدام هذا الرقم بعد.
403منعمنع الوصول إلى الصفحة المطلوبة.
غير موجودلم يجد الخادمة الصفحة المطلوبة.405
منع الطريقةالطريقة المحددة في الطلب غير مسموح بها.406
غير مقبوليولد الخادمة استجابة واحدة لا تقبلها العملاء.407
غير مقبولإعداد تأكيد وسيط مطلوبعلىك استخدام تأكيد وسيط في وقت إرسال الطلب.
408تجاوز المدة الزمنية للطلبطلب يتطلب وقتاً أطول مما يمكن للخادمة الانتظار، تم تجاوز المدة الزمنية.
409خلافلم يتم إكمال الطلب بسبب الخلاف.
410معدوملم تعد الصفحة المطلوبة متاحة.
411إعداد طول المطلوبلم يتم تعريف "Content-Length" . لا يمكن للخادمة معالجة معلومات الطلب المقدمة من العملاء بدون "Content-Length".
412فشل الحالة الضروريةتم تقييم الحالة الضرورية المقدمة في الطلب من قبل الخادمة على أنها خطأ.
413حجم الكيان المطلوب كبيرلا تقبل الخادمة هذا الطلب لأن حجم الكيان المطلوب كبير.
414طول URL للطلب كبيرلا تقبل الخادمة هذا الطلب لأن طول URL كبير. يحدث عند تحويل طلب "post" إلى طلب "get" يحتوي على معلومات استعلام طويلة.
415نوع وسائط غير مدعوملا تقبل الخادمة هذا الطلب لأن نوع الوسائط غير مدعوم.
417فشل التوقعات 
500خطأ داخلي في الخادمةطلب غير مكتمل. واجهت الخادمة حالة غير متوقعة.
501Not Implemented未完成的请求。服务器不支持所需的功能。
502Bad Gateway未完成的请求。服务器从上游服务器收到无效响应。
503Service Unavailable未完成的请求。服务器暂时超载或死机。
504Gateway Timeout网关超时。
505HTTP Version Not Supported服务器不支持"HTTP协议"版本。

设置 HTTP 状态代码的方法

下面的方法可用于在 Servlet 程序中设置 HTTP 状态码。这些方法通过 HttpServletResponse 对象可用。

序号方法 & 描述
1public void setStatus ( int statusCode )
该方法设置一个任意的状态码。setStatus 方法接受一个 int(状态码)作为参数。如果您的响应包含了一个特殊的状态码和文档,请确保在使用 PrintWriter 实际返回任何内容之前调用 setStatus。
2public void sendRedirect(String url)
该方法生成一个 302 响应,连同一个带有新文档 URL 的 Location 头。
3public void sendError(int code, String message)
该方法发送一个状态码(通常为 404),连同一个在 HTML 文档内部自动格式化并发送到客户端的短消息。

HTTP 状态码示例

下面的实例把 407 错误代码发送到客户端浏览器,浏览器会显示 "Need authentication!!!" 消息。

// 导入必需的 java 库
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import javax.servlet.annotation.WebServlet;
@WebServlet("/showError")
// 扩展 HttpServlet 类
public class showError extends HttpServlet {
 
  // مетод معالجة طلب GET
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            يُلقي استثناء ServletException, IOException
  {
      // ضبط رمز الخطأ وسبب
      response.sendError(407, "الحاجة إلى التحقق من الهوية!!!" );
  }
  // مетод معالجة طلب POST
  public void doPost(HttpServletRequest request,
                     HttpServletResponse response)
      يُلقي استثناء ServletException, IOException {
     doGet(request, response);
  }
}

الآن، دعوة Servlet أعلاه ستعرض النتيجة التالية:

حالة HTTP 407 - الحاجة إلى التحقق من الهوية!!!

نوع تقرير حالة

رسالة الحاجة إلى التحقق من الهوية!!!

وصف يجب على العملاء التحقق من هويتهم أولاً مع الوسيط (الحاجة إلى التحقق من الهوية!!!).

Apache Tomcat/5.5.29