CTZLoginServer/src/cn/citycraft/CTZLoginServer/Socket/Response.java

80 lines
2.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
*
*/
package cn.citycraft.CTZLoginServer.Socket;
import java.util.Date;
import java.util.HashMap;
import java.util.Map.Entry;
/**
* @author 蒋天蓓
* 2015年7月28日下午7:19:28
* HTTP客户端响应类
*/
public class Response {
protected HttpStates state = HttpStates.OK;
protected String version = "HTTP/1.1";
protected HashMap<String, String> header = new HashMap<String, String>();
protected String html = "";
public enum HttpStates {
OK(200), // 客户端请求成功
Bad_Request(400), // 客户端请求有语法错误,不能被服务器所理解
Unauthorized(401), // 请求未经授权这个状态代码必须和WWW-Authenticate报头域一起使用
Forbidden(403), // 服务器收到请求,但是拒绝提供服务
Not_Found(404), // 请求资源不存在eg输入了错误的URL
Internal_Server_Error(500), // 服务器发生不可预期的错误
Server_Unavailable(503); // 服务器当前不能处理客户端的请求,一段时间后可能恢复正常
private int num = 0;
/**
* @return 返回状态所表示的代码
*/
public int getNum() {
return num;
}
HttpStates(int num) {
this.num = num;
}
@Override
public String toString() {
return super.toString().replace("_", " ");
}
}
public Response() {
header.put("Date", new Date().toString() + " GMT");
header.put("Server", "Minecraft-CTZLoginServer");
header.put("Content-Type", "text/html; charset=UTF-8");
}
public void setHtml(String html) {
this.html = html;
}
public void setState(HttpStates state) {
this.state = state;
}
public void setHeader(String key, String value) {
header.put(key, value);
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append(version + " " + state.getNum() + " " + state.toString() + "\r\n");
for (Entry<String, String> entry : header.entrySet()) {
sb.append(entry.getKey() + ": " + entry.getValue() + "\r\n");
}
sb.append("\r\n");
sb.append(this.html);
return sb.toString();
}
}