所以我目前正在开发一个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的任何帮助都将受到高度赞赏!