package com.video.ui.loader; import android.text.TextUtils; import android.util.Log; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; public class CommonUrlBuilder { private String mBaseUrl; private StringBuilder mStringBuilder; private Map<String, String> mParamsMap; private boolean mIsFirstAdd = true; private static final String QUESTION_MARK = "?"; private static final String EQUAL = "="; private static final String AMPERSAND = "&"; private static final String UTF_8 = "UTF-8"; public CommonUrlBuilder(String baseUrl) { mBaseUrl = baseUrl; mParamsMap = new LinkedHashMap<String, String>(); } public void put(String name, String value) { mParamsMap.put(name, value); } public void remove(String name) { mParamsMap.remove(name); } public String toUrl() { if (TextUtils.isEmpty(mBaseUrl) || mParamsMap.size() == 0) { return mBaseUrl; } this.mStringBuilder = new StringBuilder(mBaseUrl); mIsFirstAdd = true; Iterator<String> it = mParamsMap.keySet().iterator(); while (it.hasNext()) { String key = it.next(); String value = mParamsMap.get(key); if (mIsFirstAdd) { mIsFirstAdd = false; if (mStringBuilder.indexOf(QUESTION_MARK) < 1) { // does not contain "?" mStringBuilder.append(QUESTION_MARK); encode(key, value); } else { // contains "?" mStringBuilder.append(AMPERSAND); encode(key, value); } } else { mStringBuilder.append(AMPERSAND); encode(key, value); } } Log.d("xxx", "toUrl:" + mStringBuilder.toString()); return mStringBuilder.toString(); } private void encode(String name, String value) { try { mStringBuilder.append(URLEncoder.encode(name, UTF_8)); mStringBuilder.append(EQUAL); mStringBuilder.append(URLEncoder.encode(value, UTF_8)); } catch (UnsupportedEncodingException uee) { throw new RuntimeException("VM does not support UTF-8 encoding"); } } }