使用Cookie持久性改造

时间:2013-09-19 12:23:29

标签: java android session-cookies apache-httpclient-4.x retrofit

我们,我正在使用改造,我想知道如何透明地处理会话cookie。 为此我扩展了给定的ApacheClient并在自定义调用ApacheClient.execute(HttpClient,HttpUriRequest)中使用CookieStore:

Client client = new ApacheClient() {
    final CookieStore cookieStore = new BasicCookieStore();
    @Override
    protected HttpResponse execute(HttpClient client, HttpUriRequest request) throws IOException {
        // BasicHttpContext is not thread safe 
        // CookieStore is thread safe
        BasicHttpContext httpContext = new BasicHttpContext();
        httpContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
        return client.execute(request, httpContext);
    }
};

RestAdapter restAdapter = new RestAdapter.Builder()
    .setServer(API_URL)
    .setClient(client)
    .build();

使用内置改造API(没有HttpClient扩展名)有更好的方法吗?

1 个答案:

答案 0 :(得分:12)

从API 9开始,您有java.net.CookieManager,可以像这样设置系统范围的cookie处理程序:

CookieManager cookieManager = new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(cookieManager);

是的,Apache Http客户端使用自己的cookie处理机制。但它应该不是问题,因为从API 9开始HttpURLConnection是推荐的HTTP客户端。 如果您使用Square的Retrofit,您可能也喜欢他们的OkHttp lib - 具有许多有用功能的自定义URLConnection实现。