【问题标题】:How to enter password automatically in Webview如何在 Webview 中自动输入密码
【发布时间】:2013-04-09 23:09:48
【问题描述】:

我是 Java 和 Android 新手,我有一个问题。 我认为解决方案可能很简单,但我无法解决。

我创建了一个带有 WebView 的应用程序,事情是我希望 webview 自动输入用户名和密码,以便用户在启动应用程序时已经登录。 我用谷歌搜索了它,发现了类似的东西,但它不起作用

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("https://euterpe.webuntis.com/WebUntis/index.do#main");


webView.setWebViewClient(new WebViewClient ());



class MyWebViewClient extends WebViewClient {
@Override
public void onReceivedHttpAuthRequest(WebView view,
        HttpAuthHandler handler, String host, String realm) {

    handler.proceed("Username", "password");

}
}

【问题讨论】:

    标签: java android authentication passwords webclient


    【解决方案1】:

    你好,请试试这个:

    webView.getSettings().setJavaScriptEnabled(true);
    
    webView.loadUrl("javascript:document.getElementsByName('school').value = 'schoolname'");
    webView.loadUrl("javascript:document.getElementsByName('j_username').value = 'username'");
    webView.loadUrl("javascript:document.getElementsByName('j_password').value = 'password'");
    
    webView.loadUrl("javascript:document.forms['login'].submit()");
    

    第一行启用javascript

    所有其他行填写表格并最终提交表格。

    请查看字符串撇号,我编辑了我的答案。

    【讨论】:

    • 感谢您的回复,但这是我之前尝试过的,但它不起作用,因为它说 WebView 类型中的方法 loadUrl(String, Map) 不适用于论据
    【解决方案2】:

    虽然这是一个老问题,但我想我会发布我的解决方案:

        webView.getSettings().setJavaScriptEnabled(true);   
    
        webView.loadUrl("http://your.url");
    
        webView.setWebViewClient(new WebViewClient() {
    
            public void onPageFinished(WebView view, String url) {
                view.loadUrl("javascript:document.getElementsByName('school')[0].value = 'schoolname'");
                view.loadUrl("javascript:document.getElementsByName('j_username')[0].value = 'username'");
                view.loadUrl("javascript:document.getElementsByName('j_password')[0].value = 'password'");
    
                view.loadUrl("javascript:document.forms['login'].submit()");
            }
        });
    

    看起来很像本杰明的答案。唯一的区别是 [0] 部分,选择第一个找到的元素,加上我的实现在触发 javascript 之前等待页面加载。

    【讨论】:

      【解决方案3】:

      替换

      webView.setWebViewClient(new WebViewClient ());
      

      webView.setWebViewClient(new MyWebViewClient ());
      

      只有这样覆盖方法onReceivedHttpAuthRequest才会被调用。

      此处理仅适用于 HTTP 身份验证请求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-21
        • 1970-01-01
        • 2022-08-18
        • 2019-02-24
        • 2017-01-30
        • 2012-07-04
        相关资源
        最近更新 更多