107 lines
2.1 KiB
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;
|
|
}
|
|
}
|