WebView的postUrl方法仅适用于显式字符串

时间:2018-06-22 09:20:36

标签: java android string login webview

我已经可以说这是一个愚蠢的问题,但是我正在尝试使用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。

我只是不明白,这没有任何意义。

2 个答案:

答案 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);
     } 
 }