qq_17341543 2016-02-03 03:47 采纳率: 0%
浏览 2806

android studio 获取cookie

最近一段时间开始使用android stuido 公司接口一直都有要获取cookie 进行登录 。然而
/*
* 获取cookie值
*/
public void getCookie(Context mContext) {

    DefaultHttpClient defaultHttpClient = (DefaultHttpClient) getHttpClient();
    List<Cookie> cookies = defaultHttpClient.getCookieStore().getCookies();
    for (int i = 0; i < cookies.size(); i++) {

        if (cookies.get(i).getName().equals("token")) {
            String cookie = cookies.get(i).getValue();
            ACacheConst.cookie = cookie;
            ACache.get(mContext).put(ACacheConst.COOKIE, cookie);
            System.out.println("cookie---------------" + cookie);
        }
    }
}   这段代码 在eclipse 上是完全没有问题的  但是在studio 就不行啊  后面找了下原因是 6.0 把HttpClient相关的类去掉了 要添加依赖库 
  于是 我再studio 添加了下  
useLibrary 'org.apache.http.legacy'  就没问题了   但是问题来了 上面那段代码 在studio 上面还是获取不到cookie  我使用的是 retrofit 网络请求库  有没大神知道如何解决的 急  谢谢 
  • 写回答

1条回答

  • tony4geek 2016-02-03 03:59
    关注

    你用 retrofit 的话

    http://stackoverflow.com/questions/21530307/set-custom-cookie-in-retrofit

     I had similar situation in my app. This solution works for me to retrieve cookies using Retrofit. MyCookieManager.java
    
    import java.io.IOException;
    import java.net.CookieManager;
    import java.net.URI;
    import java.util.List;
    import java.util.Map;
    
    class MyCookieManager extends CookieManager {
    
        @Override
        public void put(URI uri, Map<String, List<String>> stringListMap) throws IOException {
            super.put(uri, stringListMap);
            if (stringListMap != null && stringListMap.get("Set-Cookie") != null)
                for (String string : stringListMap.get("Set-Cookie")) {
                    if (string.contains("userid")) {
                        //save your cookie here
                    }
                }
        }
    }
    Here is how to set your cookie for future requests using RequestInterceptor:
    
     MyCookieManager myCookieManager = new MyCookieManager();
                CookieHandler.setDefault(myCookieManager);
     private static final RestAdapter REST_ADAPTER = new RestAdapter.Builder()
                .setEndpoint(API_URL)
                .setLogLevel(RestAdapter.LogLevel.FULL)
                        .setRequestInterceptor(new RequestInterceptor() {
                            @Override
                            public void intercept(RequestFacade requestFacade) {
                                String userId = ;//get your saved userid here
                                if (userId != null)
                                    requestFacade.addHeader("Cookie", userId);
                            }
                        })
                .build();
    

    https://github.com/square/retrofit/issues/503

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体