带Android AsyncTask的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

我正在尝试创建一个从Wordpress检索数据的应用程序。我正在使用Wordpress JSON API来实现这一点。在我的应用程序中,我有一个
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。