java-在Android WebView的loadUrl和PostUrl之间保持会话

java-在Android WebView的loadUrl和PostUrl之间保持会话,第1张

概述我使用androidWebView的PostUrl登录我的网站,它可以正常工作并显示网站的主页,但是使用WebView的LoadUrl方法后,它要求我再次登录,并且用户将被重定向到登录页面.我进行了很多搜索,发现了很多答案,但是没有一个对我有用.这是我的代码:WebViewwb;@OverridepublicViewonCreat

我使用@L_301_0@ WebVIEw的PostUrl登录我的网站,它可以正常工作并显示网站的主页,但是使用WebVIEw的LoadUrl方法后,它要求我再次登录,并且用户将被重定向到登录页面.我进行了很多搜索,发现了很多答案,但是没有一个对我有用.这是我的代码:

 WebVIEw wb;@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,        Bundle savedInstanceState) {    VIEw rootVIEw = inflater.inflate(R.layout.fragment_antivirus, container, false); cookieSyncManager.createInstance(getActivity().getBaseContext());        cookieSyncManager.getInstance().startSync();        cookieManager cookieManager = cookieManager.getInstance();        cookieManager.setAcceptcookie(true);    wb = (WebVIEw)rootVIEw.findVIEwByID(R.ID.Pardakht);    wb.getSettings().setJavaScriptEnabled(true);    wb.setWebVIEwClIEnt(new WebVIEwClIEnt() {        @OverrIDe        public boolean shouldOverrIDeUrlLoading(WebVIEw vIEw, String url) {              return false;        }        @OverrIDe        public voID onPageFinished(WebVIEw vIEw, String url) {            cookieSyncManager.getInstance().sync();        }    });    // log in to my website successfully <~~~    String url="http://crm.example.com/user.PHP?op=bG9naW4=";    String postData="hIDlogin=1&username="+username+"&password="+password+"&submit=%D9%88%D9%86%D9%87";    wb.postUrl(url, EnCodingUtils.getBytes(postData, "BASE64"));    cookieSyncManager.getInstance().sync();        // when i want to open new page it will be redirected to login page     wb.loadUrl("http://crm.example.com/customer.PHP?action=trafik");    return rootVIEw;}

解决方法:

您不能先调用wb.postUrl(),然后才能立即调用wb.loadUrl().您必须先完成第一个 *** 作,然后再调用第二个.

当您执行第二个loadUrl()时,第一个postUrl()尚未完成,因此,当调用loadUrl()时,WebVIEw不具有会随postUrl()响应返回的会话cookie. cookieManager代码可能不是必需的.您可以将所有内容删除.

如果您需要一个接一个地调用它们,请使用onPageFinished()确定帖子何时完成,以便您可以开始下一个:

    @OverrIDe    public voID onPageFinished(WebVIEw vIEw, String url) {        if (url.startsWith("http://crm.example.com/user.PHP") {            wb.loadUrl("http://crm.example.com/customer.PHP?action=trafik");        }    }

取出所有cookieManager / cookieSyncManager内容,然后尝试执行此 *** 作.

您可以将PHP代码下载到该服务器上吗?您应该考虑使用一个包含用户名/密码数据并显示您的customer.PHP?action = trafik页面的URL.

总结

以上是内存溢出为你收集整理的java-在Android WebView的loadUrl和PostUrl之间保持会话全部内容,希望文章能够帮你解决java-在Android WebView的loadUrl和PostUrl之间保持会话所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1079495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存