带Android AsyncTask的WordPress JSON API
我正在尝试创建一个从Wordpress检索数据的应用程序。我正在使用Wordpress JSON API来实现这一点。在我的应用程序中,我有一个带Android AsyncTask的WordPress JSON API,android,json,wordpress,android-asynctask,Android,Json,Wordpress,Android Asynctask,我正在尝试创建一个从Wordpress检索数据的应用程序。我正在使用Wordpress JSON API来实现这一点。在我的应用程序中,我有一个JSONAsyncTask类,它使用HTTPClient、Post和Response检索数据。当检索到JSON数据(或URL返回的任何类型的数据)时,它将创建一个Toast并将其打印出来。它适用于每个URL,但以下URL除外: 我不知道这里发生了什么 以下是我的AsyncTask类: public class JSONAsyncTask extends
JSONAsyncTask
类,它使用HTTPClient、Post和Response检索数据。当检索到JSON数据(或URL返回的任何类型的数据)时,它将创建一个Toast并将其打印出来。它适用于每个URL,但以下URL除外:
我不知道这里发生了什么
以下是我的AsyncTask类:
public class JSONAsyncTask extends AsyncTask<String, Void, Boolean>{
String responseData;
public JSONAsyncTask(){
responseData = "";
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
print("Loading...");
}
@Override
protected Boolean doInBackground(String... params) {
try {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(params[0]);
HttpResponse response = client.execute(post);
int stat = response.getStatusLine().getStatusCode();
if(stat == 200){
HttpEntity entity = response.getEntity();
String data = EntityUtils.toString(entity);
responseData = data;
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Boolean result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
processData();
}
private void processData(){
print(responseData);
}
}
公共类JSONAsyncTask扩展了AsyncTask{
字符串响应数据;
公共JSONAsyncTask(){
回应数据=”;
}
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
打印(“加载…”);
}
@凌驾
受保护的布尔doInBackground(字符串…参数){
试一试{
HttpClient=new DefaultHttpClient();
HttpPost=新的HttpPost(参数[0]);
HttpResponse response=client.execute(post);
int stat=response.getStatusLine().getStatusCode();
如果(统计=200){
HttpEntity=response.getEntity();
字符串数据=EntityUtils.toString(实体);
响应数据=数据;
}
}捕获(客户端协议例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(布尔结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
processData();
}
私有void processData(){
打印(应答数据);
}
}
我建议您删除if语句if(stat==200){
,因为您只在响应代码为200时处理响应
即使响应代码不是200,您也应该处理您的响应
您可能从服务器收到的响应代码不同。有关HTTP响应代码的详细信息,请查看
HttpEntity entity = response.getEntity();
String data = EntityUtils.toString(entity);
responseData = data;
我希望这能有所帮助。当它不起作用时,它会打印出任何错误吗?如果有,请用错误跟踪更新您的问题。@iRuth它似乎不起作用pritin@iRuth它似乎没有打印出一个error@arjay07请发布此代码适用的1个URL。@iRuth几乎所有链接到JSON文件的URL。