在应用程序开发过程中或多或少的需要通过HTTP、HTTPS协议与服务器交互。这其中一个常见的情况就是要求对URL进行encode处理,以保证中文、特殊字符的正确传递。不过这个小小的url encode方法有些时候也会酿成”血案”。
发送给服务端的请求中的参数值,如果含有特殊符号,需要是做URLEncode,服务端才可以正常解析,否则可能会出错。
URLEncode主要是把一些特殊字符转换成转移字符,比如:&要转换成<&>这样的。
如果不转换,可能会在运行时直接报错。
如果全部转换,也会报错,因为会把其中非参数的部分也给转换了。
转换方式:
public static String toURLEncoded(String paramString) {
if (paramString == null || paramString.equals("")) {
LogD("toURLEncoded error:"+paramString);
return "";
}
try
{
String str = new String(paramString.getBytes(), "UTF-8");
str = URLEncoder.encode(str, "UTF-8");
return str;
}
catch (Exception localException)
{
LogE("toURLEncoded error:"+paramString, localException);
}
return "";
}
返回的参数的转换:
public static String toURLDecoded(String paramString) {
if (paramString == null || paramString.equals("")) {
LogD("toURLDecoded error:"+paramString);
return "";
}
try
{
String str = new String(paramString.getBytes(), "UTF-8");
str = URLDecoder.decode(str, "UTF-8");
return str;
}
catch (Exception localException)
{
LogE("toURLDecoded error:"+paramString, localException);
}
return "";
}