Restful API:无法从Wordpress网站获取信息

时间:2015-08-19 00:33:37

标签: android wordpress

我试图从我的wordpress网站获取内容。我想要指定帖子中的内容,你可以看到:(理解,这个网站不是真实的,但它来自真实的网站,我只是替换不同的标题,网址等)http://pastebin.com/PWuC8usi

我正在使用Wordpress API(RESTFUL API)。

错误说:

  

解析数据时出错值<!类型为java.lang.String的DOCTYPE不能   转换为JSONObject

@Override
        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub
            InputStream inputStream = null;
            String result= null;
            HttpClient client = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(params[0]);

            try {

                HttpResponse response = client.execute(httpGet);
                inputStream = response.getEntity().getContent();

                // convert inputstream to string
                if(inputStream != null){
                    result = convertInputStreamToString(inputStream);
                    Log.i("App", "Data received:" +result);

                }
                else
                    result = "Failed to fetch data";

                return result;

            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

            return null;
        }



 private void parseJSON(String data){

        try{
            JSONObject jsonResponse = new JSONObject(data);
            //JSONArray jsonMainNode = jsonResponse.getJSONArray("posts");
            JSONArray jsonMainNode = jsonResponse.getJSONArray("content");
            Log.i("App", "jsonMainNode = "+jsonMainNode);

            int jsonArrLength = jsonMainNode.length();
            Log.i("App", "jsonArrLength = "+jsonArrLength);



            for(int i=0; i < jsonArrLength; i++) {

                JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
                String postTitle = jsonChildNode.getString("title");
                String postUrl = jsonChildNode.getString("url");
                String postDate = jsonChildNode.getString("date");
                String postContent = jsonChildNode.getString("content");

                tvPostTitle.setText("Page title: " +postTitle);
                tvPostUrl.setText("Page URL: " +postUrl);
                tvPostDate.setText("Date: " +postDate);
                tvPostContent.setText("Content: " +android.text.Html.fromHtml(postContent).toString());
            }

        }catch(Exception e){
            Log.i("App", "Error parsing data " +e.getMessage());

        }
    }

2 个答案:

答案 0 :(得分:1)

您要解析的字符串不是JSON格式。

以下代码段:

try {
    String data = "<!DOCTYPE not a json data goes here ...";
    JSONObject jsonResponse = new JSONObject(data);
} catch (JSONException e) {
    Log.d("App", "Error parsing data " + e.getMessage());
}

会给你同样的错误信息:

  

解析数据时出错值&lt;!java.lang.String类型的DOCTYPE无法转换为JSONObject

我猜你会连接到错误的API端点。检查您使用的URL。使用您自己的网络浏览器连接到那里。

答案 1 :(得分:0)

我会评论,但我没有足够的声誉&#39;所以我会猜一猜。

<!DOCTYPE

是HTML文档的第一行。您可能没有解析JSON对象,而是解析网页本身。也可能是您被重定向到错误页面(例如HTTP 404),该错误页面也会以

开头
<!DOCTYPE

声明。如果您需要进一步的帮助,发布日志,特别是&#39;数据&#39; parseJSON(String data)中使用的字符串。