我们,我正在使用改造,我想知道如何透明地处理会话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扩展名)有更好的方法吗?
答案 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实现。