package com.litesuits.http.request.content; import com.litesuits.http.data.Consts; import com.litesuits.http.data.NameValuePair; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.List; import java.util.Map; /** * @author MaTianyu * @date 14-7-29 */ public class UrlEncodedFormBody extends StringBody { public UrlEncodedFormBody(String encodeBody) { super(encodeBody, Consts.MIME_TYPE_FORM_URLENCODE, Consts.DEFAULT_CHARSET); } public UrlEncodedFormBody(String encodeBody, String charset) { super(encodeBody, Consts.MIME_TYPE_FORM_URLENCODE, charset); } public UrlEncodedFormBody(List<NameValuePair> list) { super(handleListValue(list, Consts.DEFAULT_CHARSET), Consts.MIME_TYPE_FORM_URLENCODE, Consts.DEFAULT_CHARSET); } public UrlEncodedFormBody(List<NameValuePair> list, String charset) { super(handleListValue(list, charset), Consts.MIME_TYPE_FORM_URLENCODE, charset); } public UrlEncodedFormBody(Map<String, String> map) { super(handleMapValue(map, Consts.DEFAULT_CHARSET), Consts.MIME_TYPE_FORM_URLENCODE, Consts.DEFAULT_CHARSET); } public UrlEncodedFormBody(Map<String, String> map, String charset) { super(handleMapValue(map, charset), Consts.MIME_TYPE_FORM_URLENCODE, charset); } private static String handleMapValue(Map<String, String> map, String charset) { if (map == null) { return ""; } StringBuilder sb = new StringBuilder(); boolean isF = true; for (Map.Entry<String,String> entry : map.entrySet()) { if (!isF) sb.append(Consts.AND); else isF = false; try { sb.append(URLEncoder.encode(entry.getKey(), charset)) .append(Consts.EQUALS) .append(URLEncoder.encode(entry.getValue(), charset)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } return sb.toString(); } private static String handleListValue(List<NameValuePair> list, String charset) { if (list == null) { return ""; } StringBuilder sb = new StringBuilder(); boolean isF = true; for (NameValuePair p : list) { if (!isF) sb.append(Consts.AND); else isF = false; try { sb.append(URLEncoder.encode(p.getName(), charset)) .append(Consts.EQUALS) .append(URLEncoder.encode(p.getValue(), charset)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } return sb.toString(); } @Override public String toString() { return "StringEntity{" + "string='" + string + '\'' + ", charset='" + charset + '\'' + ", contentType='" + contentType + '\'' + '}'; } }