我已经可以说这是一个愚蠢的问题,但是我正在尝试使用postUrl()
以及当我像这样显式编写帖子数据时登录到网页:
String postData = "username=johndoe&password=mypassword";
myWebview.postUrl("https://moodle.domain.com/login/index.php", postData.getBytes());
它可以工作,但是如果我使用变量构造postData:
String postData = "username="+user+"&password="+pass;
myWebview.postUrl("https://moodle.domain.com/login/index.php", postData.getBytes());
它不起作用。凭据错误。我已经验证了两个字符串具有完全相同的值,并尝试使用UTF-8。
我只是不明白,这没有任何意义。
答案 0 :(得分:0)
尝试以下
String postData = "username=" + URLEncoder.encode(my_username, "UTF-8") + "&password=" + URLEncoder.encode(my_password, "UTF-8");
webview.postUrl("https://moodle.domain.com/login/index.php",postData.getBytes());
答案 1 :(得分:0)
看起来,“用户”或“通过”具有不可见的符号。您需要:
1)使用equals
检查字符串:
String postData1 = "username=johndoe&password=mypassword";
String postData2 = "username="+user+"&password="+pass;
System.out.println(postData1.equals(postData2));
2)尝试查找不可见的符号,例如:
String postData1 = "username=johndoe&password=mypassword";
String postData2 = "username="+user+"&password="+pass;
char[] arr1 = postData1.toCharArray();
char[] arr2 = postData1.toCharArray();
for (int i=0; i< Math.max(arr1.length(), arr2.length(); i++ ) {
if(arr1[i] != arr2[i]) {
System.out.println("Different i " + i);
}
}