在我的Application
课堂上,我执行以下操作:
public class MyApplication extends Application {
private static HttpURLConnection conn = null;
public static CookieStore cookieStore;
public static HttpContext localContext;
public static DefaultHttpClient client = new DefaultHttpClient();
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
CookieSyncManager.createInstance(this);
cookieStore = new BasicCookieStore();
localContext = new BasicHttpContext();
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
}
...
}
我在某些方面有联系Runnable
:
HttpURLConnection conn = null;
URL url;
try {
url = new URL(requestUrl);
conn = (HttpURLConnection) url.openConnection();
if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) {
System.setProperty("http.keepAlive", "false");
}
conn.setConnectTimeout(8000);
conn.setRequestMethod(method);
conn.setInstanceFollowRedirects(false);
conn.setRequestProperty("Content-Type","application/x-www-form-urlendcoded");
MyApplication app = (MyApplication) mContext.getApplicationContext();
*******************************************
if(app.cookieStore.getCookies()!=null){
conn.setRequestProperty("Cookie", app.cookieStore.getCookies().toString());
Log.d("tag", "cookie get " + cookie.getCookie(mContext.getString(R.string.host_url)));
}
********** this part not work **********
Map m = conn.getHeaderFields();
if (m.containsKey("Set-Cookie")) {
String cookies = "";
Collection c = (Collection) m.get("Set-Cookie");
for (Iterator i = c.iterator(); i.hasNext();) {
cookies += (String) i.next() + ",";
}
cookie.setCookie(mContext.getString(R.string.host_url), cookies);
Log.d("tag", "cookie set " + cookies);
}
} catch(...) { ... }
我Cookiee
通过使用cookieStore
并设置了cookies,但我什么也没得到,它返回null
。
怎么用CookieStore
?
一些例子和答案给出了这个:
List<Cookie> cookies = app.client.getCookieStore().getCookies();
它也null
为我返回。