elg*_*oog 54 cookies android cookiestore android-webview
我有一个在webview中打开URL的应用程序,然后用户必须通过webview登录到站点并在登录后收到cookie.我在登录后遇到cookie时遇到问题.
问题是,我可以使用android.webkit.CookieManager实现这一点,并在一个字符串中输出所有cookie.
但是,我想使用cookie存储(如在java.net.CookieStore中)实现它,所以我需要使用java.net.CookieManager.
我在WebViewClient的onPageFinished()中使用以下代码.我知道问题在于打开一个新连接,我需要从当前页面获取内容.我很感激一些帮助,谢谢
@Override
public void onPageFinished(WebView view, String url){
Log.d(TAG, "Finished loading: " + url);
CookieSyncManager syncManager = CookieSyncManager.createInstance(Main.this);
syncManager.sync();
CookieManager manager = new CookieManager();
manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(manager);
try {
URL blah = new URL(url);
HttpURLConnection con = (HttpURLConnection) blah.openConnection();
readStream(con.getInputStream()); // outputting html
}
catch (Exception e) {
}
CookieStore cookieJar = manager.getCookieStore();
List<HttpCookie> cookies = cookieJar.getCookies();
for (HttpCookie cookie: cookies) {
Log.d(TAG, "cookie name : "+cookie.getName().toString());
}
}
Run Code Online (Sandbox Code Playgroud)
mr.*_*fox 79
您可以通过这种方式从webview中提取所有cookie当前URL作为字符串:
@Override
public void onPageFinished(WebView view, String url){
String cookies = CookieManager.getInstance().getCookie(url);
Log.d(TAG, "All the cookies in a string:" + cookies);
}
Run Code Online (Sandbox Code Playgroud)
vim*_*083 26
这是一个很晚,但它可能会帮助一个人
您可以使用此获取cookie值
getCookie("http://www.example.com","cookieName");
Run Code Online (Sandbox Code Playgroud)
将函数声明为
public String getCookie(String siteName,String cookieName){
String CookieValue = null;
CookieManager cookieManager = CookieManager.getInstance();
String cookies = cookieManager.getCookie(siteName);
String[] temp=cookies.split(";");
for (String ar1 : temp ){
if(ar1.contains(cookieName)){
String[] temp1=ar1.split("=");
CookieValue = temp1[1];
break;
}
}
return CookieValue;
}
Run Code Online (Sandbox Code Playgroud)
这个答案来自@vimal1083。它返回 a 中的值Map,当然也写在Kotlin.
fun getCookieMap(siteName: String): Map<String,String> {
val manager = CookieManager.getInstance()
val map = mutableMapOf<String,String>()
manager.getCookie(siteName)?.let {cookies ->
val typedArray = cookies.split(";".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
for (element in typedArray) {
val split = element.split("=".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
if(split.size >= 2) {
map[split[0]] = split[1]
} else if(split.size == 1) {
map[split[0]] = ""
}
}
}
return map
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64278 次 |
| 最近记录: |