android webview 带cookie 请求第三方网站 自动登录
最近要再 android端 使用当前的 用户 自动登录第三方网站 一个论坛,搞了好几 都 没有搞定,想来想去 最终明白了,今天记录一下。
主要代码: FormBody body = new FormBody.Builder() .add(“userName”, userName) .add(“token”,token) .add(“password”,“8d969eef6ecad3c29a3a629280e686cf0c2323a86aff3ca12020c923adc6c92”) .build(); // 此处携带参数 根据 第三方网站接口决定
Request request = new Request.Builder().url(Constant.BBSLOGIN)
.addHeader("X-Requested-With","XMLHttpRequest")
.addHeader("Cookie",currentCookie) // **此处关键代码**
.post(body).build();
Call call = new OkHttpClient().newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d("请求反馈网络失败","论坛服务异常,请联系管理员");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Headers headers = response.headers();
HttpUrl loginUrl = request.url();
List<Cookie> cookies = Cookie.parseAll(loginUrl, headers);
cookieStr = new StringBuilder();
for (Cookie cookie : cookies) {
cookieStr.append(cookie.name()).append("=").append(cookie.value() + ";");
}
Log.d("获取的cookie", String.valueOf(cookieStr));
final String result = response.body().string();
Log.d("登录后:",result);
BbsEntity bbsEntity = JsonUtil.GsonToBean(result, BbsEntity.class);
if(bbsEntity.getSuccess().equals("true")){ // 登录成功时 保存 cookie
Boolean okcookie = false;
if(!TextUtils.isEmpty(String.valueOf(cookieStr))){
okcookie = syncCookie(mContext,Constant.BBS_HOST,String.valueOf(cookieStr));
}
}else{
Log.d("登录后报错信息",bbsEntity.getError().getToken());
}
}
});
|