我有一个java应用程序,在这个应用程序中我使用URLDecoder来解码密码的值。
下面是我代码的一部分:
Map<String, String[]> paramMap = request.getParameterMap();
Set<String> keySet = paramMap.keySet();
Iterator<String> iterator = keySet.iterator();
while (iterator.hasNext())
{
String key = iterator.next();
if (!key.equals("_")){
try {
String value = URLDecoder.decode(request.getParameter(key),"UTF-8");
System.out.println("Getting parameter("+ key +" = '" + value +"')");
}
}如果值包含“%”,则不会对其进行解码。
我尝试使用getQueryString()来返回包含百分比的字符串,但它没有提取特定参数的方法
String requestParamValue = URLDecoder.decode(request.getQueryString(),"UTF-8");这将返回:
Request raw param decoded is feature=check&userid=xyz@gmail.com&password=Asp%8]a/Asp%8]a/有没有办法让包含'%‘的字符串使用request.getParameter(键)解码url
谢谢
发布于 2021-08-23 22:56:08
百分比符号是URL编码中的保留字符,因此必须对其本身进行编码。如果请求错误,servlet应该会失败。
为密码参数提供的字符串应该是URL编码的。在java中这样做:
String result = java.net.URLEncoder.encode("Asp%8]a/Asp%8]a/",java.nio.charset. StandardCharsets.UTF_8.name());
result ==> "Asp%258%5Da%2FAsp%258%5Da%2F"https://stackoverflow.com/questions/68899817
复制相似问题