`

http请求参数中含有 & 或者空格,则必须URL编码

阅读更多

http请求参数中含有& 或者空格,则必须URL编码

发送请求时,会先把请求参数转化为形如:

a=a1&b=b1&c=c1



 updateParameter会调用RequestPanel中的getRequestBodyFromList,



 参考com/common/bean/ParameterIncludeBean.java中的getQueryString方法



 WebServletUtil.isShouldURLEncode就是用来智能地判断是否需要URL转码,

目前的规则是:

http请求参数中含有& 或者空格,则必须URL编码

具体代码:

/***
	 * 是否包含指定字符串,不区分大小写
	 * 
	 * @param input
	 *            : 原字符串
	 * @param regex
	 * @return
	 */
	public static boolean contain2(String input, String regex) {
        /***
         * input:(1)bss登录(2) <br>
         regex:bss登录(2)
         */
        regex = regex.replace("(", "\\(");
        regex = regex.replace(")", "\\)");
        if (ValueWidget.isNullOrEmpty(input)) {
			return false;
		}
		Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
		Matcher m = p.matcher(input);
		boolean result = m.find();
		return result;
	}
 /***
     * 是否需要URL编码<br>
     * http请求参数中含有& 或者空格,则必须URL编码
     *
     * @param value
     * @return
     */
    public static boolean isShouldURLEncode(String value) {
        return !ValueWidget.isNullOrEmpty(value) && (value.contains("&") || RegexUtil.contain2(value, "[\\s]"));
    }

 

 优化:

GET请求时,参数含有中文,也需要URL编码:

	public static boolean isHasChinses(String str) {
		String encodeName = "UTF-8";
		for (int i = 0; i < str.length(); i++) {
			try {
				String singleStr = str.substring(i, i + 1);
				int leng = getEncodeLength(singleStr, encodeName);
				// System.out.println(singleStr + "\t" + leng);
				if (leng == 9)// 表示是中文字符
				{
					// System.out.println("有中文");
					return true;
				}
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			} catch (MyException e) {
				e.printStackTrace();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return false;
	}

 /***
     * 是否需要URL编码<br>
     * http请求参数中含有& 或者空格,则必须URL编码
     *
     * @param value
     * @return
     */
    public static boolean isShouldURLEncode(String value) {
        return !ValueWidget.isNullOrEmpty(value) && (value.contains("&") || RegexUtil.contain2(value, "[\\s]")
                || SystemHWUtil.isHasChinses(value));
    }

 

  • 大小: 523.4 KB
  • 大小: 233.2 KB
  • 大小: 280 KB
分享到:
评论

相关推荐

    url参数中有+、空格、=、%、、#等特殊符号的问题解决

    url出现了有+,空格,/,?,%,#,&,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,...+ URL 中+号表示空格 + 空格 URL中的空格可以用+号或者编码 / 分隔目录和子目录 / ? 分隔实际的URL和参数 

    JS过滤url参数特殊字符的实现方法

    空格 URL中的空格可以用+号或者编码 3. / 分隔目录和子目录 / 4. ? 分隔实际的 URL 和参数 ? 5. % 指定特殊字符 % 6. # 表示书签 # 7. & URL 中指定的参数间的分隔符 & 8. = URL 中指定参数的值 = 解决的方法:...

    URL编码 URL编码

    在HTTP请求中,"+"通常被用作空格的替代,但在URL编码中,它们是两个不同的实体。 4. 非ASCII字符,如中文、日文等,需要使用UTF-8编码转换成多个十六进制序列后再进行URL编码。 URL编码的应用场景包括但不限于: 1...

    swift-url分类解决URL里面的空格中文及其他特殊字符问题

    首先,让我们深入理解URL编码的原理。在HTTP协议中,非ASCII字符和某些特殊字符在URL中是不允许出现的。为了包含这些字符,我们需要使用percent encoding(百分号编码),也就是将它们转换为%加两位十六进制数的形式...

    Java Http请求传json数据乱码问题的解决

    在实际解决乱码问题的过程中,如果发现使用Base64加密传输中文数据还会出现问题,可以改用URL编码的方式来传输数据,即使用JavaScript的`encodeURI`函数对数据进行两次URL编码,后端接收到后进行一次URL解码即可。...

    URL编码解码小程序

    总的来说,URL编码解码小程序是一个实用的工具,可以帮助用户方便地处理含有非ASCII字符或特殊字符的URL,提高他们在网络开发和数据处理中的效率。理解URL编码的工作原理和应用场景,对于理解互联网通信的基础和解决...

    url编码转换器

    在开发网页应用或者处理HTTP请求时,理解并正确使用URL编码是至关重要的,可以避免各种因字符编码错误引发的404错误或其他通信问题。 在压缩包内的`code.exe`文件可能是这个url编码转换器的可执行程序,用户运行这...

    jquery获取URL中参数解决中文乱码问题的两种方法

    以上两种方法在处理URL中的参数时,需要注意如果参数值中包含中文字符,那么在发送参数之前需要对其进行URL编码(使用 `encodeURI` 函数),在接收参数之后需要对URL编码的字符串进行解码(使用 `decodeURI` 函数)...

    URL编码解码器

    URL编码(URL Encoding)是互联网应用中常见的数据处理方式,主要目的是为了确保非ASCII字符或者特殊字符在HTTP请求中能够正确传输。在Web开发中,当我们需要在URL中包含空格或其他非字母数字字符时,就需要对这些...

    vb url编码解码vb url编码解码vb url编码解码

    标题和描述中提到的“vb url编码解码”是指在Visual Basic(VB)环境中进行URL编码和解码的过程。URL编码,也称为百分号编码,是一种用于将特殊字符转换为适用于URL格式的编码方式,目的是确保这些特殊字符能够正确...

    易语言URL编码转换模块源码

    在互联网通信中,URL(统一资源定位符)是网页和其他网络资源的地址,但因为URL中可能包含非ASCII字符或者特殊字符,如空格、引号等,这些字符在传输过程中可能会引起问题。为了确保数据的正确传输,就需要对URL进行...

    url编码工具

    例如,当你需要在查询字符串中传递参数时,这些参数可能包含空格或其他特殊字符,这时就需要进行URL编码,以防止服务器无法正确解析请求。 总的来说,URL编码是一种确保数据在网络中准确无误传输的必要步骤,而...

    URL编码转换工具 很好用

    在IT行业中,URL编码是一种常见的数据处理方式,特别是在网页开发和服务器通信中。URL(统一资源定位符)编码是确保URL中的特殊字符能在网络传输中正确解析和处理的关键步骤。以下是对“URL编码转换工具”及其相关...

    URL编码转换工具

    URL编码是互联网上的一种标准编码方式,用于将特殊字符转换为可安全传递的ASCII字符串,以便在URL(统一资源定位符)中使用。这个“URL编码转换工具”就是专门为了帮助开发者解决这个问题而设计的。它能够将URL中的...

    C++URL编码和解码

    除了手动实现外,还可以使用第三方库,如`Poco`库中的`URIEncoder`和`URLDecoder`,或者`cpprestsdk`库的`web::uri::encode_segment`和`web::uri::decode`等函数,它们提供了更便捷的方式来处理URL编码和解码。...

    codeURL编码解码工具

    在IT行业中,URL编码与解码是网络编程中不可或缺的一部分,尤其在处理HTTP请求和URL字符串时显得尤为重要。本文将详细讲解"codeURL编码解码工具"的相关知识点,包括URL编码的原理、用途以及如何使用这类工具进行编码...

    C#自动识别URL编码,asp.net自动识别URL编码

    在C#和ASP.NET中处理URL编码至关重要,因为这直接影响到网页的正常显示和请求的正确传递。 1. **C#中的URL编码与解码** - `Uri.EscapeUriString()`: 这个方法主要用于对整个URI进行编码,但不编码URI中的保留字符...

    url编码解码源代码

    在IT行业中,URL编码(又称为百分号编码)是一种用于在网络应用中表示非ASCII字符或特殊字符的标准。这种编码方式是HTTP协议的一部分,确保数据可以在URL中安全传输。本话题将详细探讨“url编码解码源代码”,以及...

    URL编码解码工具 反向分析URL地址

    7. **注意事项**:虽然大部分浏览器会自动处理URL编码,但在手动构造请求或者处理动态生成的URL时,了解并正确使用URL编码是至关重要的,否则可能导致请求失败或者安全问题。 8. **安全考量**:URL编码也可以用于...

Global site tag (gtag.js) - Google Analytics