http请求参数中含有&,则必须URL编码
/*** * 如果参数中含有特殊字符&,则强制URL编码<br> * 为什么?因为http参数就是通过& 分隔的 * * @param parameterIncludeBean */ public static void urlencodeParameter(ParameterIncludeBean parameterIncludeBean) { String val = parameterIncludeBean.getValue(); if (!ValueWidget.isNullOrEmpty(val) && val.contains("&")) { try { val = URLEncoder.encode(val, SystemHWUtil.CHARSET_UTF); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } parameterIncludeBean.setValue(val); } } protected TreeMap getParameterMap(boolean isUrlEncoding,String requestCharset) { List<ParameterIncludeBean> parameters = getTableParameters(); //如果请求参数中含有&特殊字符,则需要进行URL编码 if (!ValueWidget.isNullOrEmpty(parameters)) { int size = parameters.size(); for (int i = 0; i < size; i++) { ParameterIncludeBean parameterIncludeBean = parameters.get(i); urlencodeParameter(parameterIncludeBean); } } return TableUtil.getParameterMap(parameters, isUrlEncoding, requestCharset); }
类com.common.bean.ParameterIncludeBean中
public String getQueryString(boolean isUrlEncoding,String requestCharset) { if(isUrlEncoding &&!ValueWidget.isNullOrEmpty(this.value) &&!ValueWidget.isNullOrEmpty(requestCharset)){ try { this.value=URLEncoder.encode(this.value, requestCharset); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } }else{//如果参数中含有特殊字符&,则强制URL编码,为什么?因为http参数就是通过& 分隔的 if(!ValueWidget.isNullOrEmpty(this.value)&&this.value.contains("&")){ try { this.value= URLEncoder.encode(this.value, SystemHWUtil.CHARSET_UTF);//必须使用UTF-8编码 } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } return this.key + "=" + this.value; }