从 webview 获取带有路径和过期日期的 cookie

2023-11-21

我目前有一个 webview,它在 onPageFinished 中获取 cookie

mWebview = (WebView) this.findViewById(R.id.myWebView);

    mWebview.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            String cookies = CookieManager.getInstance().getCookie(url);
            Log.d("Cookie", cookies);
        }
    });

    mWebview.loadUrl("http://www.google.com");

CookieManager.getCookie() 仅返回 cookie 的名称和值对。

现在我想获得有关该 cookie 的更多信息,例如路径和到期日期等...

知道如何提取 cookie 的所有“原始数据”吗?


您需要覆盖 WebView 的资源加载才能访问响应标头(Cookie 作为 http 标头发送)。 根据您支持的 Android 版本,您需要重写 WebViewClient 的以下两个方法:

mWebview.setWebViewClient(new WebViewClient() {

            @Override
            public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
                if (request != null && request.getUrl() != null && request.getMethod().equalsIgnoreCase("get")) {
                    String scheme = request.getUrl().getScheme().trim();
                    if (scheme.equalsIgnoreCase("http") || scheme.equalsIgnoreCase("https")) {
                        return executeRequest(request.getUrl().toString());
                    }
                }
                return null;
            }

            @Override
            public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
                if (url != null) {
                    return executeRequest(url);
                }
                return null;
            }
        });

然后,您可以自己检索 url 的内容并将其提供给 WebView(通过创建新的 WebResourceResponse)或返回 null 并让 WebView 处理它(考虑到这会再次调用网络!)

private WebResourceResponse executeRequest(String url) {
        try {
            URLConnection connection = new URL(url).openConnection();
            String cookie  = connection.getHeaderField("Set-Cookie");
            if(cookie != null) {
                Log.d("Cookie", cookie);
            }
            return null;
            //return new WebResourceResponse(connection.getContentType(), connection.getHeaderField("encoding"), connection.getInputStream());
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 webview 获取带有路径和过期日期的 cookie 的相关文章

  • 如何在 Android 应用程序中每天重复一个操作?

    我每天都想重复一个动作 即使应用程序未运行或设备已重新启动 重新启动 它也必须继续工作 在我的代码中 我尝试每 1 分钟显示一条 TOAST 消息 作为测试 它在模拟器中工作正常 但在真实设备上不起作用 我尝试对修复进行一些更改 正如我在一
  • tns run android --emulator 不工作 - NativeScript

    我已按照此步骤操作link http docs nativescript org tutorial chapter 1 当我使用命令运行时tns run android emulator 我在命令提示符中收到以下错误 Configuring
  • android/eclipse 中的网络服务

    我需要通过soap 方法使用android eclipse 的Web 服务 即 我必须提供输入并根据用户输入从网络服务显示适当的结果 如何做到这一点 java类 public class Demo webserviceActivity ex
  • 自动调整文本视图大小不起作用

    您好 我在我的 Android 应用程序中使用自动调整大小文本视图 我的应用程序 minSdkVersion 是 19 所以我正在使用支持库 https developer android com guide topics ui look
  • 使用 Firebase Java API 检索/格式化数据的最佳方式

    我在用着Firebase用于数据存储Android项目 并使用Firebase Java API来处理数据 不过 我不确定我是否尽可能高效地完成此操作 并且我希望获得一些有关检索和格式化数据的最佳实践的建议 我的Firebase存储库看起来
  • 如何阻止 Android ViewFlipper 循环?

    我将 ViewFlipper 设置为每 5 秒自动翻转一次 省略一些细节 它看起来像这样并且工作正常 ViewFlipper flipper ViewFlipper findViewById R id myflipperid flipper
  • Kohana_Exception [ 0 ]:需要有效的 cookie salt。请设置 Cookie::$salt

    我正在学习本教程 http kowsercse com 2011 09 04 kohana tutorial beginners http kowsercse com 2011 09 04 kohana tutorial beginners
  • Kotlin自定义get执行方法调用

    为了提高对 SharedPreferences Editor 调用的可读性 我想使用一个 Kotlin 变量 每次需要新的 SharedPreferences Editor 时都会执行 getSharedPreferences edit 最
  • Android:进程已死亡 - 资源不足?

    我编写的简单 HTTP GET 请求有一个小问题 该请求每 X 分钟请求一个 URL 我每天都会遇到一两次进程在 GET 请求期间停止的情况 这是调试日志的示例 12 07 16 29 22 650 V TAG 11655 Executin
  • python - 将cookie添加到cookiejar

    如何在 python 中创建 cookie 并将其添加到 CookieJar 实例 我拥有 cookie 的所有信息 名称 值 域 路径等 但我不想通过 http 请求提取新的 cookie 我尝试了这个 但看起来 SimpleCookie
  • opengl 覆盖在相机视图上

    我仍然没有找到在相机预览顶部显示 opengl 叠加层的正确方法 有一个 hack 你可以调用 setContentView GLSurfaceView addContentView MyCameraSurfaceView 但它无法正常工作
  • android 中的 lang.NumberFormatException

    我有以下代码 除了在后台线程中从数据库读取一些值并使用这些值之外什么也不做 我使用 jar 绘制折线图 对于我用于每个数组值的折线图 问题是第三个我传递给绘制 LineChart 的构造函数的参数是 float float viteza S
  • Phonegap 上基于 Cookie 的身份验证

    我面临基于phonegap cookie的身份验证的问题 在我强制iPhone关闭我的应用程序 双击物理按钮并关闭 后 我丢失了与服务器建立的cookie 我怎样才能避免它 有什么配置吗 或者有替代方法吗 当我第一次运行它时它工作正常 当我
  • android.R.layout.simple_list_item_1是什么?

    在我看到的所有示例中 他们在创建 ArrayAdapter 时仅使用 android R layout simple list item 1 android R layout simple list item 1是什么 它只是一个名为sim
  • 在 Android 模拟器中更改屏幕亮度

    Android模拟器可以测试屏幕亮度变化吗 我尝试过各种示例 它们都使用以下代码片段 WindowManager LayoutParams lp window getAttributes lp screenBrightness some f
  • 如何在Android AsyncTask中显示Toast?

    我正在尝试在我的initial background类中显示Toast 扩展为AsyncTask
  • 如何在 EditText 中用逗号分隔数字

    我有一个 EditText 其 inputType 为number 当用户打字时 我想用逗号分隔数字 这是一个小例子 123 将表示为 123 1234 将表示为 1 234 12345 将表示为 12 345 等等 我尝试使用 TextW
  • android.media.Ringtone.play() 在播放 28 次后停止工作

    我有一个打开了几个小时的应用程序 并使用后台服务并附加了前台通知 每隔一段时间就会使用以下方式播放声音 try Ringtone r RingtoneManager getRingtone context uri r play catch
  • 当应用程序打开时,应用程序未显示接收 FCM 的通知

    当我从 Firebase 发送推送时 如果应用程序在后台或已关闭 我会收到通知 但当应用程序打开时不会 调试我发现它在 MyMessagingService 中特别是在 onMessageReceived 处停止 所以我猜我的问题在于生成通
  • 如何像 youtube 一样在纸板中观看普通视频

    我有一个可以正常播放的应用程序VR视频 我的应用程序有两个玩家可以玩这两种类型 在我的VrVideoView有一个按钮可以让视频播放立体声模式 我的问题是 我怎样才能观看正常的视频Cardboard就像YouTube app None

随机推荐