English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Die Formatierung von HTTP-Anfragen und HTTP-Antworten ist ähnlich und hat die folgende Struktur:
Ursprüngliche Statuszeile + Zeilenumbruch (Zeilenumbruch+(Zeilenumbruch)
Keine oder mehrere Header-Zeilen+Zeilenumbruch
Eine leere Zeile, d.h. Zeilenumbruch
Ein optionales Nachrichtenkörper, wie z.B. Datei, Abfragedaten oder Abfrageausgabe
Beispielsweise könnte der Header der Serverantwort wie folgt aussehen:
HTTP/1.1 200 OK Inhalt-Typ: text/html Header2: ... ... HeaderN: ... (Leere Zeile) !doctype ... <html> <head>.../head> <body> ... </body> </html>
Die Statuszeile enthält die HTTP-Version (im Beispiel HTTP/1.1)、eine Statusnummer (im Beispiel 200)und eine kurze Nachricht, die dem Statuscode entspricht (im Beispiel OK).
Nachfolgend ist eine Liste möglicher HTTP-Statuscodes, die von Webservern zurückgegeben werden können, und der zugehörigen Informationen aufgeführt:
Code | Nachricht | Beschreibung |
---|---|---|
100 | Fortsetzen | Nur ein Teil der Anfrage wurde vom Server empfangen, aber solange sie nicht abgelehnt wird, sollte der Client die Anfrage fortsetzen. |
101 | Protokolle umschalten | Server-Protokoll umschalten. |
200 | OK | Anfrage erfolgreich. |
201 | Erstellt | Diese Anfrage ist vollständig und erstellt eine neue Ressource. |
202 | Accepted | Dieser Request wurde akzeptiert und verarbeitet, aber die Verarbeitung ist unvollständig. |
203 | Non-authoritative Information | |
204 | No Content | |
205 | Reset Content | |
206 | Partial Content | |
300 | Multiple Choices | Liste der Links. Der Benutzer kann einen Link auswählen und zu dieser Position gelangen. Bis zu fünf Adressen. |
301 | Moved Permanently | Die angeforderte Seite wurde auf eine neue URL verschoben. |
302 | Found | Die angeforderte Seite wurde temporär auf eine neue URL verschoben. |
303 | See Other | Die angeforderte Seite ist unter einer anderen URL erreichbar. |
304 | Not Modified | |
305 | Use Proxy | |
306 | Unused | Dieser Code wurde in früheren Versionen verwendet. Er wird jetzt nicht mehr verwendet, aber der Code wird beibehalten. |
307 | Temporary Redirect | Die angeforderte Seite wurde temporär auf eine neue URL verschoben. |
400 | Bad Request | Der Server versteht die Anfrage nicht. |
401 | Unauthorized | Die angeforderte Seite erfordert Benutzernamen und Passwort. |
402 | Payment Required | Sie können diesen Code noch nicht verwenden. |
403 | Forbidden | Der Zugriff auf die angeforderte Seite ist verboten. |
404 | Not Found | Der Server kann die angeforderte Seite nicht finden. |
405 | Method Not Allowed | Die im Request angegebene Methode ist nicht erlaubt. |
406 | Not Acceptable | Der Server generiert nur eine Antwort, die vom Client nicht akzeptiert wird. |
407 | Proxy Authentication Required | Sie müssen vor der Zustellung der Anfrage die Authentifizierung des Proxy-Servers verwenden. |
408 | Request Timeout | Die Zeit, die die Anfrage benötigt, ist länger als die Zeit, die der Server warten kann, Timeout. |
409 | Conflict | Die Anfrage konnte aufgrund eines Konflikts nicht abgeschlossen werden. |
410 | Gone | Die angeforderte Seite ist nicht mehr verfügbar. |
411 | Länge Required | "Content"-"Länge" nicht definiert. Der Server kann die von der Clientseitennachricht gesendete Nachricht ohne Content nicht verarbeiten.-Längeninformation der Anfrage. |
412 | PräCONDITION Failed | Die angegebenen Prämisse im Request wird vom Server als falsch bewertet. |
413 | Request Entity Too Large | Der Server akzeptiert die Anfrage nicht, weil der Anfragekörper zu groß ist. |
414 | Anfrage-URL zu lang | Der Server akzeptiert die Anfrage nicht, weil die URL zu lang ist. Dies tritt auf, wenn Sie eine "post"-Anfrage in eine "get"-Anfrage mit langer Abfrageinformation umwandeln. |
415 | Nicht unterstützter Mediennutzer | 服务器不接受该请求,因为媒体类型不被支持。 |
417 | Expectation Failed | |
500 | Internal Server Error | 未完成的请求。服务器遇到了一个意外的情况。 |
501 | Not Implemented | 未完成的请求。服务器不支持所需的功能。 |
502 | Bad Gateway | 未完成的请求。服务器从上游服务器收到无效响应。 |
503 | Service Unavailable | 未完成的请求。服务器暂时超载或死机。 |
504 | Gateway Timeout | 网关超时。 |
505 | HTTP Version Not Supported | 服务器不支持"HTTP协议"版本。 |
下面的方法可用于在 Servlet 程序中设置 HTTP 状态码。这些方法通过 HttpServletResponse 对象可用。
序号 | 方法 & 描述 |
---|---|
1 | public void setStatus ( int statusCode ) 该方法设置一个任意的状态码。setStatus 方法接受一个 int(状态码)作为参数。如果您的响应包含了一个特殊的状态码和文档,请确保在使用 PrintWriter 实际返回任何内容之前调用 setStatus。 |
2 | public void sendRedirect(String url) 该方法生成一个 302 响应,连同一个带有新文档 URL 的 Location 头。 |
3 | public void sendError(int code, String message) 该方法发送一个状态码(通常为 404),连同一个在 HTML 文档内部自动格式化并发送到客户端的短消息。 |
下面的实例把 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 { // Methode zumVerarbeitenvonGET-Anfragenbehandeln public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // FehlercodeundBegründungsetzen response.sendError(407, "Need authentication!!!" ); } // Methode zumVerarbeitenvonPOST-Anfragenbehandeln public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
JetztwirdderobigeServletfolgendenErgebnisanzeigen:
HTTPStatus 407 - Needauthentication!!!Typ Statusbericht Nachricht Needauthentication!!! Beschreibung DerClientmusszuerstsichbei demProxyauthentifizieren(Needauthentication!!!). ApacheTomcat/5.5.29 |