package com.cundong.izhihu.http;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import android.os.Bundle;
import android.text.TextUtils;
import com.cundong.izhihu.util.MD5Util;
import com.cundong.izhihu.util.StringUtils;
public class UrlUtils {
/**
* 将用户请求的url转化为key值,通过这个key值,可以读取数据库中的缓存数据
* 注意:需要清除url中的token,这样token即使变化了,也能读取到缓存
*
* @param url
* @return
*/
public static String getUrlKey(String url) {
if(TextUtils.isEmpty(url))
return "";
StringBuilder sb = new StringBuilder();
String[] array = StringUtils.split(url, "&");
for (int i = 0; i < array.length; i++) {
if (!array[i].startsWith("token")) {
sb.append(array[i]);
}
}
return MD5Util.encrypt(sb.toString());
}
/**
* 将Key-value转换成用&号链接的URL查询参数形式。
*
* @param parameters
* @return
*/
public static String encodeUrl(Bundle parameters) {
if (parameters == null) {
return "";
}
ArrayList<String> list = new ArrayList<String>();
StringBuilder sb = new StringBuilder();
boolean first = true;
for (String key : parameters.keySet()) {
list.add(key);
}
Collections.sort(list);
for (String key : list) {
if (first)
first = false;
else
sb.append("&");
if (parameters.getString(key) != null) {
try {
sb.append(URLEncoder.encode(key, "UTF-8") + "=" + URLEncoder.encode(parameters.getString(key), "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
return sb.toString();
}
/**
* 将用&号链接的URL参数转换成key-value形式。
*
* @param s
* @return
*/
public static Bundle decodeUrl(String s) {
Bundle params = new Bundle();
if (s != null) {
String array[] = s.split("&");
for (String parameter : array) {
String[] paramArr = parameter.split("=");
if(paramArr!=null&¶mArr.length==2){
try {
params.putString(URLDecoder.decode(paramArr[0], "UTF-8"), URLDecoder.decode(paramArr[1], "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
}
return params;
}
public static Bundle map2Bundle(HashMap<String, String> requestParams) {
Bundle bundle = new Bundle();
Iterator<Entry<String, String>> entryKeyIterator = requestParams.entrySet().iterator();
while (entryKeyIterator.hasNext()) {
Entry<String, String> entry = entryKeyIterator.next();
String key = entry.getKey();
String value = entry.getValue();
bundle.putString(key, value);
}
return bundle;
}
}