package com.ydl.ydlcommon.utils;
import android.net.Uri;
import android.text.TextUtils;
import com.ydl.ydlcommon.data.http.GsonProvider;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URLEncoder;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* Created by haorui on 2019/4/9.
* Des:
*/
public class URLUtils {
public static Map<String, String> queryStr2Map(String url){
URI uri = URI.create(url);
Map<String, String> query_pairs = new LinkedHashMap<String, String>();
String query = uri.getQuery();
String[] pairs = query.split("&");
for (String pair : pairs) {
int idx = pair.indexOf("=");
query_pairs.put(pair.substring(0, idx), pair.substring(idx + 1));
}
return query_pairs;
}
public static String map2QueryStr(Map<String, String> map) {
StringBuffer sb = new StringBuffer();
if (map.size() > 0) {
for (String key : map.keySet()) {
sb.append(key + "=");
if (StringUtils.isEmpty(map.get(key))) {
sb.append("&");
} else {
String value = map.get(key);
try {
value = URLEncoder.encode(value, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
sb.append(value + "&");
}
}
}
return sb.toString();
}
//url追加参数
public static String appendParmas(String url1,String key,String value){
if (TextUtils.isEmpty(url1) || TextUtils.isEmpty(key) || TextUtils.isEmpty(value)){
return "";
}
String url = url1;
try {
Uri uri = Uri.parse(url1);
if (uri.getScheme().equals("ydl-user")){
//统一路由格式
String json = uri.getQueryParameter("params");
if (!TextUtils.isEmpty(json)){
LinkedHashMap linkedHashMap = GsonProvider.INSTANCE.getGson().fromJson(json,LinkedHashMap.class);
String urluu = (String) linkedHashMap.get("url");
//加入参数
urluu = urlAppendParam(urluu,key,value);
linkedHashMap.put("url",urluu);
//组装新的url
String params = GsonProvider.INSTANCE.getGson().toJson(linkedHashMap);
params = URLEncoder.encode(params,"UTF-8");
String[] sss = url.split("\\?");
url = sss[0]+"?params="+params;
}else {
//没有params,则表示url格式有误,不处理
}
}else {
//非统一路由格式
//加入参数
url = urlAppendParam(url,key,value);
}
}catch (Exception e){
e.printStackTrace();
}
return url;
}
private static String urlAppendParam(String urluu,String key,String value){
if (TextUtils.isEmpty(urluu) || TextUtils.isEmpty(key) || TextUtils.isEmpty(value)){
return "";
}
if (urluu.contains("?")){
String[] ss = urluu.split("\\?");
if (TextUtils.isEmpty(ss[1])){
urluu+=key+"="+value;
}else {
urluu+="&"+key+"="+value;
}
}else {
urluu+="?"+key+"="+value;
}
return urluu;
}
}