package com.dh.foundation.utils; import com.google.gson.Gson; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; /** * 请求参数配置集合类 * Created By: Seal.Wu * Date: 2015/4/7 * Time: 10:57 */ public class RequestParams<ParamsObj> implements IRequestParams { private final static Gson gson = new Gson(); private transient String paramsEncoding = "utf-8"; private transient Map<String, String> params; private transient Map<String, String> headers; private transient boolean isRestStyle = false; private ParamsObj data; public RequestParams() { this.params = new HashMap<String, String>(4); } public void setHeaders(Map<String, String> headers) { this.headers = headers; } public Map<String, String> getHeaders() { return headers; } @Override public void setParamsEncoding(String paramsEncoding) { this.paramsEncoding = paramsEncoding; } @Override public String getParamsEncoding() { return paramsEncoding; } @Override public void putParams(String key, String value) { params.put(key, value); } @Override public void setParams(String key, String value) { params.put(key, value); } @Override public void removeParams(String key) { params.remove(key); } @Override public Map<String, String> getParams() { return params; } private String encodeParameters(Map<String, String> params, String paramsEncoding) { StringBuilder encodedParams = new StringBuilder(); try { for (Map.Entry<String, String> entry : params.entrySet()) { encodedParams.append(URLEncoder.encode(entry.getKey(), paramsEncoding)); encodedParams.append('='); encodedParams.append(URLEncoder.encode(entry.getValue(), paramsEncoding)); encodedParams.append('&'); } return encodedParams.toString(); } catch (UnsupportedEncodingException uee) { throw new RuntimeException("Encoding not supported: " + paramsEncoding, uee); } } public void setParams(Map<String, String> params) { this.params = params; } /** * 是否为rest风格请求 * * @return 是或否 */ public boolean isRestStyle() { return isRestStyle; } /** * 设置是否为rest风格请求 * * @param isRestStyle 是或否 */ public void setIsRestStyle(boolean isRestStyle) { this.isRestStyle = isRestStyle; } /** * 当为restStyle样式时要传入的参数对象 * * @return 参数对象 */ public ParamsObj getParamsObj() { return data; } /** * 设置参数对象 * * @param paramsObj 参数对象 */ public void setParamsObj(ParamsObj paramsObj) { this.data = paramsObj; } @Override public String toString() { return encodeParameters(this.params, paramsEncoding); } public String getParamObjJsonData() { if (getParamsObj() != null) { return gson.toJson(getParamsObj()); } return gson.toJson(new Object()); } }