使用Android获取Async Task JSON时获取空指针异常

时间:2014-03-30 07:13:18

标签: java android json android-asynctask

当我尝试使用AsyncTask请求JSON时,我收到NullPointerException。我正在使用loopj和AsyncTask

这是我的代码:

 String str = null;   
    public class MainActivity extends Activity {
       @Override
       protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new TheTask().execute();
       }

       class TheTask extends AsyncTask<Void, Void, String> {
         @Override
         protected String doInBackground(Void... params)  {

          try{
            AsyncHttpClient client = new AsyncHttpClient();
            client.addHeader("Authorization", "Token token=Wa5sfwP3ku7c15qkZTsd**");
            client.get("http://*********.com/api/v1/***", new AsyncHttpResponseHandler() {
                @Override
                public void onSuccess(String response) {
                    str = response;
                   Log.v("==========RESULT==========", response); 
                }
             });
          } catch(Exception e){
             Log.v("========== ERROR ==========", e.toString());
          }
          return str;   
        }

        @Override
        protected void onPostExecute(String result) {
          TextView txt = (TextView) findViewById(R.id.textView1);
          txt.setText("Result: " + result);   
        }
       }
    }

1 个答案:

答案 0 :(得分:3)

你做错了。 在doInBackground()方法中,您应该使用同步方法,并且使用异步:

 client.get("http://*********.com/api/v1/***", new AsyncHttpResponseHandler() {
                @Override
                public void onSuccess(String response) {
                    str = response;
                   Log.v("==========RESULT==========", response); 
                }

这就是为什么你的doInBackground()返回null,并且你试图在onPostExecute()中处理null

您应该使用Loopj-Async库中的类SyncHttpClient中的方法。