java - AsyncTask 中 CookieSyncManager.createInstance 中的 NullPointerException

标签 java android android-asynctask nullpointerexception android-cookiemanager

我有一个从AysncTask扩展的类。在 doInBackground 方法中我想更新 cookie,所以我有:

CookieSyncManager.createInstance(context);      // <<<<<<<<<<<<<<<<<<
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setCookie(cookie.getDomain(), cookieString); 
CookieSyncManager.getInstance().sync();

但是我在第一行得到java.lang.NullPointerException

所以,问题是:

  • 为什么会导致这种情况?
  • 我是否需要在另一个 Activity 中创建它,然后仅在此 Activity 中使用它?如何 ?为什么?
<小时/>

注释:

  • 我知道我的上下文不为空,我已检查过。
  • 我无法在 AsyncTask 上使用 onCreate 方法。 To do this.
<小时/>

这是堆栈跟踪:

  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();

最佳答案

我在 ApplicationonCreate() 中调用它,将应用程序作为上下文传递

关于java - AsyncTask 中 CookieSyncManager.createInstance 中的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23813034/

相关文章:

android - Drawable 占用的内存是否比 Bitmap 少?

android - 在 AsyncTask 中将对象作为参数传递

java - Android 运行 doInBackground 后 AsyncTask 未完成

java - InstallCert.java 从哪里获取服务器证书

java - 为 maven 指定类路径

java - 将双变量值存储到列表<string>中

php - 如何通过Android获取post参数到PHP后的json数组

java - 在 Netbeans 7.3 中包含 Spring MVC

android - 保护我的 Google App Engine API 端点

Android - drawText 无效