嗨,老铁,欢迎来到我的博客!

如果觉得我的内容还不错的话,可以关注下我在 segmentfault.com 上的直播。我主要从事 PHP 和 Java 方面的开发,《深入 PHP 内核》作者之一。

[视频直播] PHP 进阶之路 - 亿级 pv 网站架构的技术细节与套路 直播中我将毫无保留的分享我这六年的全部工作经验和踩坑的故事,以及会穿插着一些面试中的 考点难点加分点

周梦康 发表于 2015-12-09 1618 次浏览 标签 : Java

免费领取阿里云优惠券 我的直播 - 《PHP 进阶之路》

有用户反馈注册失败,说来惭愧,图方便,注册走的是 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();
        }
    }

    // ...

}


嗨,老铁,欢迎来到我的博客!

如果觉得我的内容还不错的话,可以关注下我在 segmentfault.com 上的直播。我主要从事 PHP 和 Java 方面的开发,《深入 PHP 内核》作者之一。

[视频直播] PHP 进阶之路 - 亿级 pv 网站架构的技术细节与套路 直播中我将毫无保留的分享我这六年的全部工作经验和踩坑的故事,以及会穿插着一些面试中的 考点难点加分点

评论列表