会话Cookies和Android
我的android程序和会话cookie有问题 即使我在使用cookieStore,会话也不会在通话之间进行。 Webserver代码是用DJango编写的,但是当我将C程序与libcurl一起使用时,会话是保留的会话Cookies和Android,android,Android,我的android程序和会话cookie有问题 即使我在使用cookieStore,会话也不会在通话之间进行。 Webserver代码是用DJango编写的,但是当我将C程序与libcurl一起使用时,会话是保留的 public class JSON { ... DefaultHttpClient httpClient; CookieStore cookieStore; HttpContext httpContext; HttpResponse response
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();?实际上,在每次活动中,当我进入时,我会进行身份验证,当我离开时,我会取消身份验证。