android获取cookie

tech2023-02-21  89

最近一直在使用玩android开放的API做一个项目,在收藏接口的时候遇到了问题,登陆成功后在点击收藏还是提示未登录,然后慢慢接触到了cookie 此项目的接口数据来源于玩Android 思路: 使用postman模拟请求数据登录之前我们可以看到Temporary Headers中有一个Cookie字段,现在的值就是默认显示的内容 当我们登录成功后cookie字段的内容为: 可以看到postman帮我们报存了cookie中的内容,这样当我们进行收藏等操作的时候就可以操作成功,但是android中不会自动将cookie进行报存

直接进入主题:

//登录 @GET(HttpUrlRoute.TEACHER_LOGIN) Observable<Response<BaseBean>> login(@Query("teachId") String teachId, @Query("password") String password);

主活动代码:

private void onClick(View v) { final String address = "https://www.wanandroid.com/"; Retrofit retrofit = new Retrofit.Builder() .baseUrl(address)//基础URL 建议以 / 结尾 .addConverterFactory(GsonConverterFactory.create())//设置 Json 转换器 .addCallAdapterFactory(RxJavaCallAdapterFactory.create())//RxJava 适配器 .build(); API workPlaneService = retrofit.create(API.class); workPlaneService .logintext("yuhang66", "123456") .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<Response<LoginBean>>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { Log.i("eraaa", e.toString()); } @Override public void onNext(Response<LoginBean> loginBeanResponse) { Headers headers = loginBeanResponse.headers();//我们通过Response的headers对象获取到响应头信息。 List<String> values = headers.values("Set-Cookie");//通过“Set-Cookie”字段获取到服务器返回的Cookie信息 for (String s : values) { Log.e("ohmys", s); } Log.e("ohmys", "@" + values);//这里responseBodyResponse.body()获取的就是ResultBean对象 initText(values);//登录成功后 发起收藏页面的请求 } }); } private void initText(final List<String> values) { new Thread(new Runnable() { @Override public void run() { //这是一个查询产品详细信息的接口 FormBody contentBody = new FormBody.Builder() .add("id", "2334") .build(); //将cookie信息放到请求头中去 Request contentRequest = new Request.Builder() .url("https://www.wanandroid.com/lg/collect/1165/json") .header("Cookie", values.toString())//添加cookie .post(contentBody) .build(); okhttp3.Call contentCall = client.httpClient.newCall(contentRequest); try { okhttp3.Response contentResponse = contentCall.execute(); String contentResult = contentResponse.body().string(); Log.d("lalala", contentResult); } catch (IOException e) { e.printStackTrace(); } } }).start(); }

这样就可以收藏成功了 要将cookie进行持久化的话 你可以使用SharedPerference等其他方法进行报存到android中

最新回复(0)