Java JSONException:数据没有值
我试图从Facebook页面获取posts数据,但JSON对象中没有显示任何数据 Facebook只允许我们在拥有访问令牌时访问数据,我在代码中提到了这一点。不过,它没有返回任何数据 我已登录facebook,会话处于活动状态Java JSONException:数据没有值,java,android,json,facebook,Java,Android,Json,Facebook,我试图从Facebook页面获取posts数据,但JSON对象中没有显示任何数据 Facebook只允许我们在拥有访问令牌时访问数据,我在代码中提到了这一点。不过,它没有返回任何数据 我已登录facebook,会话处于活动状态 fb.authorize(MainActivity.this, new DialogListener() { @Override public void onComplete(Bundle values) {
fb.authorize(MainActivity.this, new DialogListener() {
@Override
public void onComplete(Bundle values) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "OnComplete", Toast.LENGTH_SHORT);
Editor editor=sp.edit();
editor.putString("access_token", fb.getAccessToken());
editor.putLong("access_expires", fb.getAccessExpires());
editor.commit();
try {
updateButtonImage();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Intent i = new Intent(MainActivity.this, NewsFeed.class);
startActivity(i);
}
在NewsFeed.java中,我使用以下代码解析了JSON
JSONParser jParser = new JSONParser();
JSONArray jobj = jParser.getJSONFromUrl(url);
if(jobj==null){
Log.d("NULLOBJECT", "The object is null");
}else{
Log.d("NULLOBJECT", jobj.toString());
}
JSONParser.java
public class JSONParser {
static InputStream is = null;
static JSONArray jObj = null;
static String json = "";
// constructor
public JSONParser() {
}
public JSONArray getJSONFromUrl(String url) {
// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONArray(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
}最有可能的解释是,你从Facebook得到的东西不是JSON。相反,我猜测这是一条编码为HTML文档的错误消息 修改代码以打印出json字符串,然后再尝试解析它 我注意到您的JSONParser类完全忽略了HTTP响应状态和响应内容类型 我以前见过这种代码;e、 和其他一些地方。它很脆弱,有一些糟糕的编码实践,我强烈建议您不要使用它 这里有三个教训: 不要复制别人的代码。你自己写吧 如果你真的复制了,请确保你是从可靠的来源获得的 如果你真的复制了,确保你彻底地检查了你复制的内容
这个问题中的代码太多了。将其简化为一个较小的工作程序,以显示您的问题。。。没有所有与按钮、对话框等无关的东西。而且,你处理抛出它们的方法中的所有异常的方法很糟糕。我编辑了这个问题。现在可以了吗?@StephenC-你现在可以看一下代码了吗?