80 lines
2.1 KiB
Java
80 lines
2.1 KiB
Java
/**
|
||
*
|
||
*/
|
||
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();
|
||
}
|
||
}
|