@SuppressWarnings("all")
public class CRequest {
public static void main(String[] args) {
String strURL="https://detail.tmall.com/item.htm?spm=a2156.1676643.0002.2.VQ4mWx&pos=1&acm=301211.1003.1.278270&id=536762604916&scm=1003.1.301211.ITEM_536762604916_278270 ";
UrlPage(strURL);
TruncateUrlPage(strURL);
URLRequest(URL);
}
/**
* 解析出url请求的路径,包括页面
*
* @param strURL
* url地址
* @return url路径
*/
public static String UrlPage(String strURL) {
String strPage = null;//结果--初始值 为空
String[] arrSplit = null;//截取所需数据 仓库数组--初始值 为空
strURL = strURL.trim().toLowerCase();//参数-删除 开始和结束 的 空格,如有大写 变成小写,没有不做改变
arrSplit = strURL.split("[?]");//截取 参数 以问号作为参照物 把参数分成两半 --放入仓库数组
if (strURL.length() > 0) {//如果参数的 位数 大于零
if (arrSplit.length > 1) {//如果仓库数组 位数 大于1,就是有两个数据
if (arrSplit[0] != null) {//如果仓库数组 的第一个 数据不为空
strPage = arrSplit[0];//赋值
}
}
}
return strPage;
}
/**
* 去掉url中的路径,留下请求参数部分
*
* @param strURL
* url地址
* @return url请求参数部分
*/
private static String TruncateUrlPage(String strURL) {
String strAllParam = null;
String[] arrSplit = null;
strURL = strURL.trim().toLowerCase();
arrSplit = strURL.split("[?]");
if (strURL.length() > 1) {
if (arrSplit.length > 1) {
if (arrSplit[1] != null) {
strAllParam = arrSplit[1];
}
}
}
return strAllParam;
}
/**
* 解析出url参数中的键值对 如 "index.jsp?Action=del&id=123",解析出Action:del,id:123存入map中
*
* @param URL
* url地址
* @return url请求参数部分
*/
public static Map<String, String> URLRequest(String URL) {
//key和value 都是 String 类型
Map<String, String> mapRequest = new HashMap<String, String>();
//仓库数组1
String[] arrSplit = null;
//获取URL ? 后面的参数
String strUrlParam = TruncateUrlPage(URL);
//如果后面的参数为空,则返回空
if (strUrlParam == null) {
return mapRequest;
}
// 每个键值为一组 www.2cto.com
//截取URL参数 以 & 为 参照物 劈开 有多个键值对 放入仓库1
arrSplit = strUrlParam.split("[&]");
//循环所有 截取出来 的键值对 列如:spm=a2156.1676643.0002.2.vq4mwx,pos=1
for (String strSplit : arrSplit) {
//仓库数组2
String[] arrSplitEqual = null;
//把已上键值对 以 = 为参照物 劈开 放入仓库2
arrSplitEqual = strSplit.split("[=]");
// 解析出键值
//仓库2数组 数量大于1 就说明 有一个 劈开的键和值,下标分别是0和1
if (arrSplitEqual.length > 1) {
// 正确解析
//放入map数组
mapRequest.put(arrSplitEqual[0], arrSplitEqual[1]);
} else {
//如果键不等于空
if (arrSplitEqual[0] != "") {
// 只有参数没有值,不加入
//放入 map的 只有键 没有值
mapRequest.put(arrSplitEqual[0], "");
}
}
}
return mapRequest;
}
}