在我的 Android 应用程序中,我正在尝试从 instagram 获取流行媒体,我正在使用本教程中显示的 JSONParser 类http://www.androidhive.info/2012/01/android-json-parsing-tutorial/
public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
// constructor
public JSONParser() {}
public JSONObject getJSONFromUrl(String url) {
// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpPost = new HttpGet(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 JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
}
这是我试图开始工作的代码:
private static String urlInst = "https://api.instagram.com/v1/media/popular?client_id="+clientId;
public static void Func() {
JSONParser jParser = new JSONParser();
JSONObject json = jParser.getJSONFromUrl(urlInst);
try {
JSONArray pics = json.getJSONArray("data");
for (int i = 0; i < pics.length(); i++) {
JSONObject c=(JSONObject) pics.get(i);
JSONObject user = c.getJSONObject("user");
String name= user.getString("username");
JSONObject img=c.getJSONObject("images");
JSONObject thum=img.getJSONObject("thumbnail");
String urlOfPic = thum.getString("url");
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
但我收到错误:
缓冲区错误:转换结果时出错 java.lang.NullPointerException
JSON Parser 解析数据 org.json.JSONEXception 时出错:在字符 0 处输入结束
我想弄清楚是什么导致了这个错误,有什么想法吗?据我所见,错误就在这一行。
JSONObject json = jParser.getJSONFromUrl(urlInst);
但我是初学者,所以我不确定。帮助将不胜感激。
完整的错误日志:
09-08 16:49:22.343:E/Buffer 错误(9981):错误转换结果 java.lang.NullPointerException 09-08 16:49:22.343:E/JSON 解析器(9981):解析数据时出错 org.json.JSONException :09-08 16:49:22.351 字符 0 处的输入结束:E/AndroidRuntime(9981):致命异常:主要 09-08 16:49:22.351:E/AndroidRuntime(9981):java.lang.RuntimeException:无法启动活动 ComponentInfo{hr.zadatak.undabot.instag/hr.zadatak.undabot.instag.StartShowing}:java.lang.NullPointerException 09-08 16:49:22.351:E/AndroidRuntime(9981):在 android.app .ActivityThread.performLaunchActivity(ActivityThread.java:2663) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 09-08 16:49:22.351 : E/AndroidRuntime(9981): 在 android.app.ActivityThread.access$2300(ActivityThread.java:125) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 09-08 16:49:22.351: E/AndroidRuntime( 9981): 在 android.os.Handler.dispatchMessage(Handler.java:99) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 android.os.Looper.loop(Looper.java:123) 09 -08 16:49:22.351: E/AndroidRuntime(9981): 在 android.app.ActivityThread.main(ActivityThread.java:4668) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 java.lang .reflect.Method.invokeNative(Native Method) 09-08 16:49:22.351: E/AndroidRuntime(9981): at java.lang.reflect.Method.invoke(Method.java:521) 09-08 16:49: 22.351: E/AndroidRuntime(9981): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 com.android .internal.os。ZygoteInit.main(ZygoteInit.java:636) 09-08 16:49:22.351: E/AndroidRuntime(9981): at dalvik.system.NativeStart.main(Native Method) 09-08 16:49:22.351: E/AndroidRuntime (9981): 引起: java.lang.NullPointerException 09-08 16:49:22.351: E/AndroidRuntime(9981): at hr.zadatak.undabot.instag.ListOfPhotos.LoadInstagramPictures(ListOfPhotos.java:51) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 hr.zadatak.undabot.instag.StartShowing.onCreate(StartShowing.java:16) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 android .app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 09-08 16:49 :22.351: E/AndroidRuntime(9981): ... 11 更多E/AndroidRuntime(9981): 在 dalvik.system.NativeStart.main(Native Method) 09-08 16:49:22.351: E/AndroidRuntime(9981): 引起: java.lang.NullPointerException 09-08 16:49: 22.351: E/AndroidRuntime(9981): 在 hr.zadatak.undabot.instag.ListOfPhotos.LoadInstagramPictures(ListOfPhotos.java:51) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 hr.zadatak.undabot .instag.StartShowing.onCreate(StartShowing.java:16) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 09-08 16:49 :22.351: E/AndroidRuntime(9981): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 09-08 16:49:22.351: E/AndroidRuntime(9981): ... 还有 11 个E/AndroidRuntime(9981): 在 dalvik.system.NativeStart.main(Native Method) 09-08 16:49:22.351: E/AndroidRuntime(9981): 引起: java.lang.NullPointerException 09-08 16:49: 22.351: E/AndroidRuntime(9981): 在 hr.zadatak.undabot.instag.ListOfPhotos.LoadInstagramPictures(ListOfPhotos.java:51) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 hr.zadatak.undabot .instag.StartShowing.onCreate(StartShowing.java:16) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 09-08 16:49 :22.351: E/AndroidRuntime(9981): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 09-08 16:49:22.351: E/AndroidRuntime(9981): ... 还有 11 个E/AndroidRuntime(9981):引起:java.lang.NullPointerException 09-08 16:49:22.351:E/AndroidRuntime(9981):在 hr.zadatak.undabot.instag.ListOfPhotos.LoadInstagramPictures(ListOfPhotos.java:51) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 hr.zadatak.undabot.instag.StartShowing.onCreate(StartShowing.java:16) 09-08 16:49:22.351: E/AndroidRuntime(9981) : 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 09-08 16:49:22.351: E/AndroidRuntime(9981): ... 11 更多E/AndroidRuntime(9981):引起:java.lang.NullPointerException 09-08 16:49:22.351:E/AndroidRuntime(9981):在 hr.zadatak.undabot.instag.ListOfPhotos.LoadInstagramPictures(ListOfPhotos.java:51) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 hr.zadatak.undabot.instag.StartShowing.onCreate(StartShowing.java:16) 09-08 16:49:22.351: E/AndroidRuntime(9981) : 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 09-08 16:49:22.351: E/AndroidRuntime(9981): ... 11 更多E/AndroidRuntime(9981): 在 hr.zadatak.undabot.instag.StartShowing.onCreate(StartShowing.java:16) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 09-08 16:49:22.351: E/AndroidRuntime (9981): ... 11 更多E/AndroidRuntime(9981): 在 hr.zadatak.undabot.instag.StartShowing.onCreate(StartShowing.java:16) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047) 09-08 16:49:22.351: E/AndroidRuntime(9981): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 09-08 16:49:22.351: E/AndroidRuntime (9981): ... 11 更多