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

107 lines
2.1 KiB
Java

/**
*
*/
package cn.citycraft.CTZLoginServer.Socket;
import java.util.HashMap;
/**
* @author 蒋天蓓
* 2015年7月28日下午4:58:26
* HTTP 头文件解析类
* 目前只能解析GET
*/
public class Request {
protected boolean isSuccess = false;
protected String prefix;
protected Method method;
protected String version;
protected HashMap<String, String> querystring = new HashMap<String, String>();
enum Method {
GET, POST
}
/**
* 解析字符串为Response
*
* @param response
*/
public Request(String response) {
try {
String[] args = response.split(" ");
// 解析协议
if (args[0].equalsIgnoreCase(Method.GET.toString()))
method = Method.GET;
else
method = Method.POST;
// 判断是否有查询字符串
if (args[1].contains("?")) {
// 获得分割符?的位置
int lastc = args[1].indexOf("?");
// 解析URL
prefix = args[1].substring(0, lastc);
// 解析查询字符串
String[] params = args[1].substring(lastc).split("&");
for (String param : params) {
if (param.contains("=")) {
String[] paraminfo = param.split("=");
querystring.put(paraminfo[0], paraminfo[1]);
}
}
} else {
// 直接配置为区域
prefix = args[1];
}
// 解析HTTP版本
version = args[2];
isSuccess = true;
} catch (Exception e) {
}
}
/**
* @return 获得前缀区域
*/
public String getPrefix() {
return prefix;
}
/**
* @return 获得查询字符集
*/
public HashMap<String, String> getQuerystring() {
if (querystring.isEmpty())
return null;
return querystring;
}
/**
* @return 查询数据
*/
public String getQuerystring(String key) {
return querystring.get(key);
}
/**
* @return 获得请求方式
*/
public Method getMethod() {
return method;
}
/**
* @return 获得HTTP版本
*/
public String getVersion() {
return version;
}
/**
* @return 是否转换成功
*/
public boolean isSuccess() {
return isSuccess;
}
}