当我尝试使用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);
}
}
}
答案 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
中的方法。