会话Cookies和Android

会话Cookies和Android,android,Android,我的android程序和会话cookie有问题 即使我在使用cookieStore,会话也不会在通话之间进行。 Webserver代码是用DJango编写的,但是当我将C程序与libcurl一起使用时,会话是保留的 public class JSON { ... DefaultHttpClient httpClient; CookieStore cookieStore; HttpContext httpContext; HttpResponse response

我的android程序和会话cookie有问题

即使我在使用cookieStore,会话也不会在通话之间进行。 Webserver代码是用DJango编写的,但是当我将C程序与libcurl一起使用时,会话是保留的

public class JSON {
...
    DefaultHttpClient httpClient;
    CookieStore cookieStore;
    HttpContext httpContext;
    HttpResponse response = null;
    HttpPost httpPost = null;
    HttpGet httpGet = null;
public JSON(Context context) {
    f_context = context;
    updateSettings();
    HttpParams myParams = new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(myParams, 10000);
    HttpConnectionParams.setSoTimeout(myParams, 10000);
    httpClient = new DefaultHttpClient(myParams);
    cookieStore = new BasicCookieStore();
    httpContext = new BasicHttpContext();
    httpContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
}
...
public String JSONSendCmd(String methodName) {
    String getUrl = URL + "json/" + methodName+'/';
    httpGet = new HttpGet(getUrl);
    try {
            response = httpClient.execute(httpGet,httpContext);
    } catch (Exception e) {
    }
    ...
}
试试这个:

List<Cookie> cookies = httpclient.getCookieStore().getCookies();

if (!cookies.isEmpty())
{

    CookieSyncManager.createInstance(ClientContext.getInstance());
    CookieManager cookieManager = CookieManager.getInstance();

    // sync all the cookies in the httpclient with the webview
    // by generating cookie string
    for (Cookie cookie : cookies)
    {
        Cookie sessionInfo = cookie;

        String cookieString = sessionInfo.getName() + "=" + sessionInfo.getValue() + ";    domain=" + sessionInfo.getDomain();
                            cookieManager.setCookie(ClientContext.getResources().getString(R.string.domain), cookieString);
        CookieSyncManager.getInstance().sync();
    }
}
List cookies=httpclient.getCookieStore().getCookies();
如果(!cookies.isEmpty())
{
createInstance(ClientContext.getInstance());
CookieManager CookieManager=CookieManager.getInstance();
//将httpclient中的所有Cookie与webview同步
//通过生成cookie字符串
用于(Cookie:cookies)
{
Cookie会话信息=Cookie;
字符串cookieString=sessionInfo.getName()+“=”+sessionInfo.getValue()+”;domain=“+sessionInfo.getDomain();
setCookie(ClientContext.getResources().getString(R.string.domain),cookieString);
CookieSyncManager.getInstance().sync();
}
}

可能是因为在多个活动中多次启动/使用DefaultHttpClient,在何处以及如何使用新的JSON();和xxx.JSONSendCmd();?实际上,在每次活动中,当我进入时,我会进行身份验证,当我离开时,我会取消身份验证。