String.replaceAll(regex,repl)在某些设备上无法正常工作

时间:2018-04-20 14:16:57

标签: java android json

所以我目前正在开发一个Android应用程序,出于调试目的,我记录了所有操作。问题是我使用的API采用纯文本密码进行身份验证,因为我无法获得API的功能帐户,我有其他人在为我测试应用程序,因此需要进行模糊处理密码随时显示在我的日志中。

这是我当前的代码,用于将我的JSON请求转换为字符串并对所有出现的纯文本密码进行模糊处理:

public static String jorToString(JsonObjectRequest jor){

    String body;
    try{
        body = new String(jor.getBody());
        body = body.replaceAll("password=.*","password=***********");
        body = body.replaceAll("\"password\":\".*\",","\"password\":\"***********\",");
    }catch (Exception e){
        body = "null";
    }

    String debug = "URL: " + jor.getUrl() + "\nMethod: " + (jor.getMethod() == 0 ? "GET" : jor.getMethod() == 1 ? "POST" : jor.getMethod()) + "\nBody: " + body + "\nHeaders: ";

    try{
        debug += jor.getHeaders();
    }
    catch (Exception e){
        debug += e.toString();
    }

    return debug;
}

以下是混淆之前请求正文的样子:

Body: {"grant_type":"password","client_id":"abc","client_secret":"abc","email":"my.email@domain.com","password":"plain-text-pwd"}

以及我希望它看起来像:

Body: {"grant_type":"password","client_id":"abc","client_secret":"abc","email":"my.email@domain.com","password":"************"}

现在的问题是,当我在手机(Android 4.3)上测试它时,它就像一个魅力。另一方面,在我的高级手机上,密码在日志文件中保留为纯文本,这意味着他必须在发送日志文件之前手动更改密码。

任何有助于弄清楚为什么replaceAll功能似乎不适用于较新版本的android的任何帮助都将受到高度赞赏!

0 个答案:

没有答案