gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:53:12 27 4
gpt4 key购买 nike

我使用 android WebViewPostUrl 登录我的网站,它工作正常并显示我网站的主页,但是在使用 WebView 的 LoadUrl 它要求我再次登录的方法,用户将被重定向到登录页面。我搜索了很多并找到了很多答案,但没有一个对我有用。这是我的代码:

 WebView wb;
@Override
public 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 没有 session cookie,该 session cookie 会随着 postUrl() 响应返回。 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 代码放到这个服务器上吗?您应该考虑使用一个 URL 获取用户名/密码数据并显示您的 customer.php?action=trafik 页面。

关于java - 在 Android WebView 的 loadUrl 和 PostUrl 之间保持 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32671527/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com