Android服务器客户端应用程序会话问题

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(参数

我在android上开发服务器客户端应用程序,我在应用程序的服务器端使用会话,但有时我会丢失服务器上的会话。 Ps:我在服务器上使用https连接

我用这些来举行会议:

  • 我使用单实例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);