我有一个从AysncTask扩展的类。在doInBackground方法中,我想更新cookie,所以我有:
CookieSyncManager.createInstance(context); // <<<<<<<<<<<<<<<<<<
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setCookie(cookie.getDomain(), cookieString);
CookieSyncManager.getInstance().sync();但我得到了java.lang.NullPointerException的第一行。
因此,问题是:
Notes
下面是堆栈跟踪
java.lang.NullPointerException
at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:101)
at android.webkit.JniUtil.setContext(JniUtil.java:53)
at android.webkit.CookieSyncManager.createInstance(CookieSyncManager.java:89)
at com.t.m.library.HttpRequest.doInBackground(HttpRequest.java:129)
at com.t.m.library.HttpRequest.doInBackground(HttpRequest.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)这是我的doInBackground方法:
request = new HttpGet(this.url);
request.addHeader("Accept", "application/json");
request.addHeader("Authorization", this.basicAuthentication);
HttpParams httpParams = new BasicHttpParams();
HttpProtocolParams.setVersion(httpParams, HttpVersion.HTTP_1_1);
HttpClient httpclient = null;
httpclient = new DefaultHttpClient(httpParams);
HttpResponse response = httpclient.execute(request);
// The content from the requested URL along with headers, etc.
HttpEntity entity = response.getEntity();
String responseBody = EntityUtils.toString(entity, "UTF-8");
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setCookie(cookie.getDomain(), cookieString);
CookieSyncManager.getInstance().sync();发布于 2014-05-22 21:25:45
我在Application的onCreate()中调用它,将应用程序作为上下文传递。
发布于 2014-05-22 21:16:03
我从未使用过CookieSyncManager,但从文档中可以看出,您不应该在线程中使用它,因为它已经创建了一个线程:
一个单独的线程保存由计时器驱动的cookie。
createInstance,通常在onCreate()中getInstance().startSync() In Activity.onResume()getInstance().stopSync() in Activity.onPause()这里你有一个例子
希望能帮上忙。
https://stackoverflow.com/questions/23813034
复制相似问题