Java OnClick http请求的JSON解析器不工作?安卓

Java OnClick http请求的JSON解析器不工作?安卓,java,android,json,Java,Android,Json,我不确定我需要在这个问题上包含多少信息。我已经在下面复制了我的JSON编码,但是如果需要任何其他编码,我可以提供它。此外,在出错时还提供了LogCat错误日志 { super.onCreate(savedInstanceState); setContentView(R.layout.main); refresh = (Button) findViewById(R.id.button1);

我不确定我需要在这个问题上包含多少信息。我已经在下面复制了我的JSON编码,但是如果需要任何其他编码,我可以提供它。此外,在出错时还提供了LogCat错误日志

{
                super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            refresh = (Button) findViewById(R.id.button1);


            refresh.setOnClickListener(new View.OnClickListener()
            {
            public void onClick(View view) 
              {
                 String result = null;
                InputStream is = null;

                try{
                        HttpClient httpclient = new DefaultHttpClient();
                        HttpPost httppost = new HttpPost("http://www.jamiepaleschi.co.uk/android_login/selectall.php");
                        HttpResponse response = httpclient.execute(httppost); 
                        HttpEntity entity = response.getEntity();
                        is = entity.getContent();

                        Log.e("log_tag", "connection success ");
                     //   Toast.makeText(getApplicationContext(), "pass", Toast.LENGTH_SHORT).show();
                }
                catch(Exception e)
                {
                        Log.e("log_tag", "Error in http connection "+e.toString());
                        Toast.makeText(getApplicationContext(), "Connection fail", Toast.LENGTH_SHORT).show();

                }
                //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");
                              //  Toast.makeText(getApplicationContext(), "Input Reading pass", Toast.LENGTH_SHORT).show();
                        }
                        is.close();

                        result=sb.toString();
                }
                catch(Exception e)
                {
                       Log.e("log_tag", "Error converting result "+e.toString());
                    Toast.makeText(getApplicationContext(), " Input reading fail", Toast.LENGTH_SHORT).show();

                }    
//parse json data
                    try
                {

                JSONArray jArray = new JSONArray(result);


                String re=jArray.getString(jArray.length()-1);


                TableLayout tv=(TableLayout) findViewById(R.id.table);
                tv.removeAllViewsInLayout();




                   int flag=1;

                for(int i=-1;i<jArray.length()-1;i++)

                        {




                                TableRow tr=new TableRow(Main.this);

                                tr.setLayoutParams(new LayoutParams(
                                           LayoutParams.WRAP_CONTENT,
                                           LayoutParams.WRAP_CONTENT));




                                if(flag==1)
                                {

                                    TextView b1=new TextView(Main.this);
                                     b1.setText("Mon");
                                     b1.setTextColor(Color.BLUE);
                                     b1.setTextSize(15);
                                     tr.addView(b1);


                                    TextView b19=new TextView(Main.this);
                                     b19.setPadding(10, 0, 0, 0);
                                     b19.setTextSize(15);
                                     b19.setText("Tue");
                                     b19.setTextColor(Color.BLUE);
                                     tr.addView(b19);

                                   TextView b29=new TextView(Main.this);
                                 b29.setPadding(10, 0, 0, 0);
                                     b29.setText("Wed");
                                     b29.setTextColor(Color.BLUE);
                                     b29.setTextSize(15);
                                     tr.addView(b29);

                                     TextView b39=new TextView(Main.this);
                                     b39.setPadding(10, 0, 0, 0);
                                         b39.setText("Thur");
                                         b39.setTextColor(Color.BLUE);
                                         b39.setTextSize(15);
                                         tr.addView(b39);

                                      TextView b49=new TextView(Main.this);
                                         b49.setPadding(10, 0, 0, 0);
                                             b49.setText("Fri");
                                             b49.setTextColor(Color.BLUE);
                                             b49.setTextSize(15);
                                             tr.addView(b49);


                                 tv.addView(tr);

                                     final View vline = new View(Main.this);
                                          vline.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, 2));
                                          vline.setBackgroundColor(Color.BLUE);



                                tv.addView(vline);
                                flag=0;


                                }

                                else
                                {



                                    JSONObject json_data = jArray.getJSONObject(i);

                                    Log.i("log_tag","Mon: "+json_data.getString("f1")+
                                              ", Tue: "+json_data.getString("f2")+
                                              ", Wed: "+json_data.getString("f3")+
                                              ", Thur: "+json_data.getString("f4")+
                                              ", Fri: "+json_data.getString("f5"));




                            TextView b=new TextView(Main.this);
                                String stime=String.valueOf(json_data.getString("f1"));
                                  b.setText(stime);
                                b.setTextColor(Color.RED);
                                b.setTextSize(10);
                                b.setWidth(60);
                                tr.addView(b);


                               TextView b1=new TextView(Main.this);
                                b1.setPadding(10, 0, 0, 0);
                                b1.setTextSize(10);
                                b1.setWidth(60);
                                String stime1=json_data.getString("f2");
                                 b1.setText(stime1);
                                b1.setTextColor(Color.WHITE);
                                tr.addView(b1);

                              TextView b2=new TextView(Main.this);
                             b2.setPadding(10, 0, 0, 0);
                                String stime2=String.valueOf(json_data.getString("f3"));
                                b2.setText(stime2);
                                b2.setTextColor(Color.RED);
                                b2.setTextSize(10);
                                b2.setWidth(60);
                                tr.addView(b2);

                                TextView b3=new TextView(Main.this);
                                b3.setPadding(10, 0, 0, 0);
                                   String stime3=String.valueOf(json_data.getString("f4"));
                                   b3.setText(stime3);
                                   b3.setTextColor(Color.WHITE);
                                   b3.setTextSize(10);
                                   b3.setWidth(60);
                                   tr.addView(b3);

                                 TextView b4=new TextView(Main.this);
                                   b4.setPadding(10, 0, 0, 0);
                                      String stime4=String.valueOf(json_data.getString("f5"));
                                      b4.setText(stime4);
                                      b4.setTextColor(Color.RED);
                                      b4.setTextSize(10);
                                      b4.setWidth(60);
                                      tr.addView(b4);

                                  tv.addView(tr);


                        final View vline1 = new View(Main.this);
                      vline1.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, 1));
                      vline1.setBackgroundColor(Color.WHITE);
                      tv.addView(vline1);       


                                }

                       }



                }
                catch(JSONException e)
                {
                        Log.e("log_tag", "Error parsing data "+e.toString());
                        Toast.makeText(getApplicationContext(), "JsonArray fail", Toast.LENGTH_SHORT).show();
                }




           }
           });








    /**
     * Change Password Activity Started
     **/
    changepas.setOnClickListener(new View.OnClickListener(){
        public void onClick(View arg0){

            Intent chgpass = new Intent(getApplicationContext(), ChangePassword.class);

            startActivity(chgpass);
        }

    });

   /**
    *Logout from the User Panel which clears the data in Sqlite database
    **/
    btnLogout.setOnClickListener(new View.OnClickListener() {

        public void onClick(View arg0) {

            UserFunctions logout = new UserFunctions();
            logout.logoutUser(getApplicationContext());
            Intent login = new Intent(getApplicationContext(), Login.class);
            login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(login);
            finish();
        }
    });
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
刷新=(按钮)findViewById(R.id.button1);
refresh.setOnClickListener(新视图.OnClickListener()
{
公共void onClick(视图)
{
字符串结果=null;
InputStream=null;
试一试{
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(“http://www.jamiepaleschi.co.uk/android_login/selectall.php");
HttpResponse response=httpclient.execute(httppost);
HttpEntity=response.getEntity();
is=entity.getContent();
Log.e(“Log_标签”,“连接成功”);
//Toast.makeText(getApplicationContext(),“pass”,Toast.LENGTH\u SHORT.show();
}
捕获(例外e)
{
e(“Log_标记”,“http连接错误”+e.toString());
Toast.makeText(getApplicationContext(),“连接失败”,Toast.LENGTH\u SHORT.show();
}
//将响应转换为字符串
尝试
{
BufferedReader reader=新的BufferedReader(新的InputStreamReader(is,“iso-8859-1”),8;
StringBuilder sb=新的StringBuilder();
字符串行=null;
而((line=reader.readLine())!=null)
{
sb.追加(第+行“\n”);
//Toast.makeText(getApplicationContext(),“输入读取过程”,Toast.LENGTH\u SHORT.show();
}
is.close();
结果=sb.toString();
}
捕获(例外e)
{
Log.e(“Log_标记”,“错误转换结果”+e.toString());
Toast.makeText(getApplicationContext(),“输入读取失败”,Toast.LENGTH\u SHORT.show();
}    
//解析json数据
尝试
{
JSONArray jArray=新JSONArray(结果);
String re=jArray.getString(jArray.length()-1);
TableLayout tv=(TableLayout)findViewById(R.id.table);
tv.removeAllViewsInLayout();
int标志=1;
对于(inti=-1;i这里:

i==-1
时,则
getJSONObject
返回null,因为在JSONArray的索引
-1
处没有可用的对象。因此将迭代条件更改为:

for(int i=0;i<jArray.length();i++){
  Object obj = jArray.get(i);
  if (obj instanceof JSONObject) {
  // is JSONObject
   JSONObject json_data = (JSONObject)obj;

  }else{
          //String....
   }
}

for(inti=0;i更改以下行。如果json结果为Null,它们将抛出Null指针异常

    String re=jArray.getString(jArray.length()-1);


for(inti=-1;iI猜测
JSONArray jArray=newjsonarray(结果)
结果为空我仍然完全不明白为什么…在一个单独的项目中,独立运行脚本,它可以工作…只需单击一个按钮,它就会绘制一个存储在MySQL中的时间表。当插入主应用程序时,它会失败并返回为空。你不能在UI线程上执行网络操作,因为如果你的网络运行不正常,它就会卡住UI操作非常耗时。哦,天哪……什么是讨厌的代码……现在测试它,我很快会给你结果的!即使在更改了它出错并死亡的代码后,我也会在几分钟内发布logcat结果。完全相同的logcat错误,一直到字母……没有更改。@JayPaleschi:请发布最新的代码和日志以获取更多信息help@JayPaleschi:将
sb.append(line+“\n”);
更改为
sb.append(line);
然后再试一次
03-04 05:04:58.727: E/AndroidRuntime(1005): FATAL EXCEPTION: main
03-04 05:04:58.727: E/AndroidRuntime(1005): java.lang.NullPointerException
03-04 05:04:58.727: E/AndroidRuntime(1005):     at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
03-04 05:04:58.727: E/AndroidRuntime(1005):     at org.json.JSONTokener.nextValue(JSONTokener.java:94)
03-04 05:04:58.727: E/AndroidRuntime(1005):     at org.json.JSONArray.<init>(JSONArray.java:87)
03-04 05:04:58.727: E/AndroidRuntime(1005):     at org.json.JSONArray.<init>(JSONArray.java:103)
03-04 05:04:58.727: E/AndroidRuntime(1005):     at com.learn2crack.Main$1.onClick(Main.java:129)
03-04 05:04:58.727: E/AndroidRuntime(1005):     at android.view.View.performClick(View.java:4240)
03-04 05:04:58.727: E/AndroidRuntime(1005):     at android.view.View$PerformClick.run(View.java:17721)
03-04 05:04:58.727: E/AndroidRuntime(1005):     at android.os.Handler.handleCallback(Handler.java:730)
03-04 05:04:58.727: E/AndroidRuntime(1005):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-04 05:04:58.727: E/AndroidRuntime(1005):     at android.os.Looper.loop(Looper.java:137)
03-04 05:04:58.727: E/AndroidRuntime(1005):     at android.app.ActivityThread.main(ActivityThread.java:5103)
03-04 05:04:58.727: E/AndroidRuntime(1005):     at java.lang.reflect.Method.invokeNative(Native Method)
03-04 05:04:58.727: E/AndroidRuntime(1005):     at java.lang.reflect.Method.invoke(Method.java:525)
03-04 05:04:58.727: E/AndroidRuntime(1005):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
03-04 05:04:58.727: E/AndroidRuntime(1005):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-04 05:04:58.727: E/AndroidRuntime(1005):     at dalvik.system.NativeStart.main(Native Method)
JSONObject json_data = jArray.getJSONObject(i);
for(int i=0;i<jArray.length();i++){
  Object obj = jArray.get(i);
  if (obj instanceof JSONObject) {
  // is JSONObject
   JSONObject json_data = (JSONObject)obj;

  }else{
          //String....
   }
}
    String re=jArray.getString(jArray.length()-1);
    String re= null;
    if(jArray.length!=0)jArray.getString(jArray.length()-1);
    for(int i=-1;i<jArray.length()-1;i++)
    for(int i=0;i<jArray.length();i++)