有用户反馈注册失败,说来惭愧,图方便,注册走的是 get 传参。
监控日志发现有这样一样请求
http://192.168.50.11/?nickname=%3DV%3D
原先的解析类是这样写的
public HttpParams(String url){ try { url = URLDecoder.decode(url, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } if(url.indexOf("?") < 1){ return ; } String query[] = url.split("\\?")[1].split("&"); for(int i = 0;i < query.length; i++){ if(query[i].indexOf("=") < 1 || query[i].endsWith("=")){ continue; } String queryKeyValue[] = query[i].split("="); httpQueryMap.put(queryKeyValue[0],queryKeyValue[1]); } // ... }
因为我在最开始先做的 decode
,这样导致了 url 变成了
http://192.168.50.11/?nickname==V=
这样就获取不到 nickname 的值了。
的确之前考虑的不够周全,还是先切再解析吧。
public HttpParams(String url){ if(url.indexOf("?") < 1){ return ; } String query[] = url.split("\\?")[1].split("&"); for(int i = 0;i < query.length; i++){ if(query[i].indexOf("=") < 1 || query[i].endsWith("=")){ continue; } String queryKeyValue[] = query[i].split("="); try { httpQueryMap.put(queryKeyValue[0],URLDecoder.decode(queryKeyValue[1],"UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } // ... }