getJSONfromURL

编程入门 行业动态 更新时间:2024-10-27 22:30:59
本文介绍了getJSONfromURL - 空指针异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我做了一个活动消息",它应该从给定的 URL 获取 JSON 数据.我尝试制作一个循环来打印 json 数据,但问题出在其他地方.我在 JSONArray,json"上得到 NullPointerException.

I made an activity "Messages" which is supposed to get JSON data from a given URL. I tried making a loop to print the json data, but the problem was somewhere else. I am getting NullPointerException on the JSONArray, "json".

消息类:

public class Messages extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = (TextView) findViewById(R.id.tv_messages); JSONArray json = JSONfunctions.getJSONfromURL("docs.blackberry/sampledata.json"); tv.setText(json.length()); }

JSONfunctions 类:

public class JSONfunctions { public static JSONArray getJSONfromURL(String url) { InputStream is = null; String result = ""; JSONArray jArray = null; // http post try { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); } catch (Exception e) { Log.e("log_tag", "Error in http connection " + e.toString()); } // convert response to string 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(); result = sb.toString(); } catch (Exception e) { Log.e("log_tag get data string ", "Error converting result " + e.toString()); } try { jArray = new JSONArray(result); } catch (JSONException e) { Log.e("log_tag create object ", "Error parsing data " + e.toString()); } return jArray; } }

错误:

08:11:43.683:http 连接错误android.os.NetworkOnMainThreadException 08:11:43.693: 转换错误结果 java.lang.NullPointerException: lock == null 08:11:43.703:解析数据时出错 org.json.JSONException: End of input at character 008:11:43.723: 关闭虚拟机 08:11:43.733: threadid=1: thread退出时出现未捕获的异常 (group=0x40a70930) 08:11:43.923: ATAL例外:主要 08:11:43.923:java.lang.RuntimeException:无法开始活动组件信息{com.example.sound/com.example.sound.Messages}:java.lang.NullPointerException 08:11:43.923: 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)08:11:43.923:在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)08:11:43.923:在android.app.ActivityThread.access$600(ActivityThread.java:141)08:11:43.923:在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)08:11:43.923: 在 android.os.Handler.dispatchMessage(Handler.java:99)08:11:43.923:在 android.os.Looper.loop(Looper.java:137) 08:11:43.923:在 android.app.ActivityThread.main(ActivityThread.java:5039)08:11:43.923: 在 java.lang.reflect.Method.invokeNative(Native Method)08:11:43.923: 在 java.lang.reflect.Method.invoke(Method.java:511)08:11:43.923:在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)08:11:43.923:在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)08:11:43.923: 在 dalvik.system.NativeStart.main(Native Method)08:11:43.923:引起:java.lang.NullPointerException 08:11:43.923:在 com.example.sound.Messages.onCreate(Messages.java:18) 08:11:43.923:在 android.app.Activity.performCreate(Activity.java:5104)08:11:43.923:在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)08:11:43.923:在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)

08:11:43.683: Error in http connection android.os.NetworkOnMainThreadException 08:11:43.693: Error converting result java.lang.NullPointerException: lock == null 08:11:43.703: Error parsing data org.json.JSONException: End of input at character 0 of 08:11:43.723: Shutting down VM 08:11:43.733: threadid=1: thread exiting with uncaught exception (group=0x40a70930) 08:11:43.923: ATAL EXCEPTION: main 08:11:43.923: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sound/com.example.sound.Messages}: java.lang.NullPointerException 08:11:43.923: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 08:11:43.923: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 08:11:43.923: at android.app.ActivityThread.access$600(ActivityThread.java:141) 08:11:43.923: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 08:11:43.923: at android.os.Handler.dispatchMessage(Handler.java:99) 08:11:43.923: at android.os.Looper.loop(Looper.java:137) 08:11:43.923: at android.app.ActivityThread.main(ActivityThread.java:5039) 08:11:43.923: at java.lang.reflect.Method.invokeNative(Native Method) 08:11:43.923: at java.lang.reflect.Method.invoke(Method.java:511) 08:11:43.923: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 08:11:43.923: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 08:11:43.923: at dalvik.system.NativeStart.main(Native Method) 08:11:43.923: Caused by: java.lang.NullPointerException 08:11:43.923: at com.example.sound.Messages.onCreate(Messages.java:18) 08:11:43.923: at android.app.Activity.performCreate(Activity.java:5104) 08:11:43.923: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 08:11:43.923: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)

第 18 行是:

tv.setText(json.length());

在出现上述错误之前,我也得到了很多:

Prior to the above errors, I also get many:

Unexpected value from nativeGetEnabledTags: 0

我使用的 URL(出于测试目的,docs.blackberry/sampledata.json) 已启动并正常工作.我是 Android 开发和 JSON 的新手.提前致谢.

The URL I'm using (for testing purposes, docs.blackberry/sampledata.json) is up and working. I'm new to Android Developing and JSON. Thanks in advance.

推荐答案

这是因为您正在主线程上执行网络操作,而 android 版本 >= 3.0 不允许.

This is because either you are performing network operation on main thread which in not allowed android version >= 3.0.

要解决这个问题,请使用

To solve this either use

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy);

Use AsyncTask

阅读developer.android/reference/android/os/AsyncTask.html

更多推荐

getJSONfromURL

本文发布于:2023-08-02 17:49:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1279858.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:getJSONfromURL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!