Java 使用Android获取异步任务JSON时获取空指针异常
当我尝试使用AsyncTask请求JSON时,我得到一个NullPointerException。我正在使用loopj和AsyncTask 这是我的密码: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(
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服务功能正确吗?