package org.jarling.http; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; /** * * @author Nav Roudsari ([email protected]) * */ public class HttpParameter { private String name; private String value; public HttpParameter(String name, String value){ this.name = name; this.value = value; } public HttpParameter(String name, Integer value){ this.name = name; this.value = String.valueOf(value); } public HttpParameter(String name, Long value){ this.name = name; this.value = String.valueOf(value); } public HttpParameter(String name, Double value){ this.name = name; this.value = String.valueOf(value); } public HttpParameter(String name, BigDecimal value){ this.name = name; this.value = String.valueOf(value); } public HttpParameter(String name, Boolean value){ this.name = name; this.value = String.valueOf(value); } private String getName() { return name; } public void setName(String name) { this.name = name; } private String getValue() { return value; } public void setValue(String value) { this.value = value; } public static String encodeParameters(HttpParameter[] httpParameters){ if (null == httpParameters) { return ""; } StringBuilder paramBuff = new StringBuilder(); for (int i = 0; i < httpParameters.length; i++){ try { paramBuff.append(URLEncoder.encode(httpParameters[i].getName(), "UTF-8")) .append("=") .append(URLEncoder.encode(httpParameters[i].getValue(), "UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } if (i != httpParameters.length - 1){ paramBuff.append("&"); } } return paramBuff.toString(); } public static List<HttpParameter> decodeParameters(String queryParameters){ List<HttpParameter> result = new ArrayList<>(); for (String paramPair: queryParameters.split("&")){ String[] keyval = paramPair.split("=", 2); if(keyval.length == 2){ try { String name = URLDecoder.decode(keyval[0], "UTF-8"); String value = URLDecoder.decode(keyval[1], "UTF-8"); if (!name.equals("") && !value.equals("")){ result.add(new HttpParameter(name, value)); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } return result; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; HttpParameter that = (HttpParameter) o; if (name != null ? !name.equals(that.name) : that.name != null) return false; return value != null ? value.equals(that.value) : that.value == null; } @Override public int hashCode() { int result = name != null ? name.hashCode() : 0; result = 31 * result + (value != null ? value.hashCode() : 0); return result; } }