我试图从我的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());
}
}
答案 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)中使用的字符串。