Commit 11d6ad1e authored by 陈精华's avatar 陈精华 Committed by kl

修复文件下载流URL参数中包含中文URL编码不正确导致HTTP-400异常

parent e57db692
...@@ -123,30 +123,35 @@ public class DownloadUtils { ...@@ -123,30 +123,35 @@ public class DownloadUtils {
* 对最有一个路径进行转码 * 对最有一个路径进行转码
* @param urlAddress * @param urlAddress
* http://192.168.2.111:8013/demo/Handle中文.zip * http://192.168.2.111:8013/demo/Handle中文.zip
* http://192.168.2.111:8013/download?id=1&filename=中文.zip
* @return * @return
*/ */
private String encodeUrlParam(String urlAddress) {
String newUrl = ""; private String encodeUrlParam(String urlAddress){
StringBuffer sb = new StringBuffer();
for (int i = 0; i < urlAddress.length(); i++) {
char c = urlAddress.charAt(i);
if (c >= 0 && c <= 255) {
sb.append(c);
} else {
byte[] b;
try { try {
String path = ""; //指定需要的编码类型
String param = ""; b = String.valueOf(c).getBytes("utf-8");
if (urlAddress.contains("?")) { } catch (Exception ex) {
path = urlAddress.substring(0, urlAddress.indexOf("?")); System.out.println(ex);
param = urlAddress.substring(urlAddress.indexOf("?")); b = new byte[0];
}else { }
path = urlAddress; for (int j = 0; j < b.length; j++) {
} int k = b[j];
String lastPath = path.substring(path.lastIndexOf("/") + 1); if (k < 0) {
String leftPath = path.substring(0, path.lastIndexOf("/") + 1); k += 256;
String encodeLastPath = URLEncoder.encode(lastPath, "UTF-8"); }
newUrl += leftPath + encodeLastPath; sb.append("%" + Integer.toHexString(k).toUpperCase());
if (urlAddress.contains("?")) { }
newUrl += param;
} }
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} }
return newUrl; return sb.toString();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment