Android服务器客户端应用程序会话问题
我在android上开发服务器客户端应用程序,我在应用程序的服务器端使用会话,但有时我会丢失服务器上的会话。 Ps:我在服务器上使用https连接 我用这些来举行会议:Android服务器客户端应用程序会话问题,android,session,https,client-server,sessionid,Android,Session,Https,Client Server,Sessionid,我在android上开发服务器客户端应用程序,我在应用程序的服务器端使用会话,但有时我会丢失服务器上的会话。 Ps:我在服务器上使用https连接 我用这些来举行会议: 我使用单实例DefaultHttpClient,并将其用于所有http请求 我只使用httpPost方法 我只使用https证书: 注册(新方案(“https”,sslSocketFactory,443)); ClientConnectionManager cm=新的ThreadSafeClientConnManager(参数
- 我使用单实例DefaultHttpClient,并将其用于所有http请求
- 我只使用httpPost方法
- 我只使用https证书: 注册(新方案(“https”,sslSocketFactory,443)); ClientConnectionManager cm=新的ThreadSafeClientConnManager(参数,schemeRegistry)
- 我在所有http请求之后保存cookie:
私有void createSessionCookie(){
}List cookies=httpclient.getCookieStore().getCookies(); 如果(!cookies.isEmpty()){ createInstance(ctx); CookieManager CookieManager=CookieManager.getInstance(); //通过生成cookie字符串,将httpclient中的所有cookie与webview同步 用于(Cookie:cookies){ Cookie会话信息=Cookie; 字符串cookieString=sessionInfo.getName()+“=”+sessionInfo.getValue()+”;domain=“+sessionInfo.getDomain(); cookieManager.setCookie(urlstants.SERVICE\u PRE\u URL,cookieString); CookieSyncManager.getInstance().sync(); } }
致以最诚挚的问候。您不应该手动处理Cookie,只需在某处创建静态的
CookieStore
,将其分配给HttpContext
,并在请求中使用该上下文即可。Cookie将自动保存和恢复
这些是你们班的成员:
private static CookieStore cookieStore = new BasicCookieStore();
private HttpClient httpclient = new DefaultHttpClient();
private HttpPost post = new HttpPost("your url here");
这一部分进入成员函数,该函数执行以下请求:
HttpContext ctx = new BasicHttpContext();
ctx.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
HttpResponse result = httpclient.execute(post,ctx);
我必须使用单实例HttpPost方法吗?不需要。您只需要
CookieStore
的单实例,否则您可以使用任意多个不同的get/post请求,只要您将附加到同一CookieStore
的HttpContext
传递给它们。
HttpContext ctx = new BasicHttpContext();
ctx.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
HttpResponse result = httpclient.execute(post,ctx);