Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Android获取异步任务JSON时获取空指针异常_Java_Android_Json_Android Asynctask - Fatal编程技术网

Java 使用Android获取异步任务JSON时获取空指针异常

Java 使用Android获取异步任务JSON时获取空指针异常,java,android,json,android-asynctask,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(

当我尝试使用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);   
        }
       }
    }
String str=null;
公共类MainActivity扩展了活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
新建任务().execute();
}
类任务扩展异步任务{
@凌驾
受保护字符串doInBackground(无效…参数){
试一试{
AsyncHttpClient=新的AsyncHttpClient();
client.addHeader(“授权”,“令牌令牌=Wa5sfwP3ku7c15qkZTsd**”);
get(“http://*********.com/api/v1/***”,新的AsyncHttpResponseHandler(){
@凌驾
成功时公共无效(字符串响应){
str=反应;
Log.v(“================结果==============”,响应);
}
});
}捕获(例外e){
Log.v(“================错误==============”,例如toString());
}
返回str;
}
@凌驾
受保护的void onPostExecute(字符串结果){
TextView txt=(TextView)findViewById(R.id.textView1);
txt.setText(“结果:+Result”);
}
}
}
你做错了。 在
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异步库中的类
SyncHttpClient
中的方法。

您的返回语句在
doInbackground
中的哪里?您可以发布stacktrace吗?@Raghunandan更新了我的问题。onPostExecute是否意味着异步已完成?@Emmanuel java.lang.NullPointerException:println需要一个message@AllenChun您确定您的Web服务功能正确吗?