android 接口url拼接,android中将原生请求的接口url的cookie同步到webview中。

在我们用webView.loadUrl(url);时一般会遇到判断是否登录的情况,但我们登录请求使用了android原生,那怎么在web网页中也同步登录状态呢,下面我来解释一番。

首先我们http请求时,会有一个请求头(利用抓包工具可以看到),请求头里面会有一个cookie,cookie的值是根据主域名domain而来的,他有一个时效,一般后台默认设置30分钟。所以我们需要拿到原生请求的url的cookie同步给webView.loadUrl(url);的url。下面贴代码。

syncCookie();//先调用同步cookie

webView.loadUrl(url);//再调此步骤

//向webview同步传递cookie

private synchronized void syncCookie(){

CookieSyncManager.createInstance(webView.getContext());

CookieManager cookieManager = CookieManager.getInstance();

cookieManager.setAcceptCookie(true);

cookieManager.removeAllCookie();

CookieStore cookieStore = OkGo.getInstance().getCookieJar().getCookieStore();

HttpUrl httpUrl = HttpUrl.parse(ApiConstant.getUserInfo);

List cookieList = cookieStore.getCookie(httpUrl);

for (Cookie cookie:cookieList){

String[] cookies=cookie.toString().split(";");

if(cookies!=null){

for(String c:cookies){

//给webview加载的url的domain设置原生请求接口的cookie。

cookieManager.setCookie(cookie.domain(), c);

}

}

}

CookieSyncManager.getInstance().sync();

}

//清除Cookie

private void removeCookie(String url) {

HttpUrl httpUrl = HttpUrl.parse(url);

CookieStore cookieStore = OkGo.getInstance().getCookieJar().getCookieStore();

cookieStore.removeCookie(httpUrl);

}

注意:我这里使用了okgo的网络请求框架,注意要在Application的onCreate里面配置okgo管理cookie才有效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值