热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从webserver获取数据的麻烦。-Troubleingettingdatafromwebserver

Iwrotethiscodetoreadandwritedatafromwebserver(mysqldatabse)andthenallthedatawillb

I wrote this code to read and write data from webserver (mysql databse) and then all the data will be show on my andriod application.

我编写了这段代码来从webserver (mysql databse)读取和写入数据,然后所有的数据将显示在我的andriod应用程序上。

In this regard I used PHP services for reading and writing the data from web server. Everything is working fine it gets data from web server correctly but when it reaches at this line:

在这方面,我使用PHP服务来读取和写入来自web服务器的数据。一切都运行良好,它从web服务器获取数据,但当它到达这一行时:

int success = jsonObject.getInt(TAG_SUCCESS);

It shows a null pointer exception I don't know why but it actually made me insane.

它显示了一个空指针异常,我不知道为什么,但它确实让我抓狂。

Code:

代码:

        import java.util.ArrayList;
        import java.util.HashMap;
        import java.util.List;

        import org.apache.http.NameValuePair;
        import org.apache.commons.collections.*;


        //import org.json.JSONObject;

        import android.os.AsyncTask;
        import android.os.Bundle;
        import android.app.Activity;
        import android.app.ProgressDialog;
        import android.util.Log;
        import android.view.Menu;
        import android.view.View;
        import android.widget.Button;
        import android.widget.ListAdapter;
        import android.widget.ListView;
        import android.widget.SimpleAdapter;
        import org.json.*;
        public class MiddleActivity extends Activity {

            Button btnMiddleDB;

            ProgressDialog pDialog ;

            JSONParser jsOnParser= new JSONParser();

            JSONArray places = null;


            private static final String URL = "http://192.168.1.2/android_connect/get_all_products.php";

            // JSON Node names
            private static final String TAG_SUCCESS = "success";
            private static final String TAG_PRODUCTS = "products";
            private static final String TAG_PID = "pid";
            private static final String TAG_NAME = "name";

            ArrayList> placesList;



            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_middle);

                new LoadGettingFromDatabase().execute();
                btnMiddleDB = (Button) findViewById(R.id.button1);

                btnMiddleDB.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View arg0) {


                    }
                });

            }

running background thread for getting data from webserver

运行后台线程从webserver获取数据。

            class LoadGettingFromDatabase extends AsyncTask{

                @Override
                protected void onPreExecute() {
                    super.onPreExecute();
                    pDialog = new ProgressDialog(MiddleActivity.this);
                    pDialog.setMessage("Getting from database...");
                    pDialog.setIndeterminate(false);
                    pDialog.setCancelable(true);
                    pDialog.show();
                }
        **after getting data from webserver parse it to json and store it into string**
                @Override
                protected String doInBackground(String... args) {

                    List params = new ArrayList();
                    Log.d("Seen","seen1");
                    JSONObject jsOnObject= jsonParser.makeHttpRequest(URL, "GET" ,params);
                    Log.d("String","JSON 2");

                    //Log.d("All entries","Entries" + jsonObject.toString());

                    try{
                        Log.d("Seen","seen2");

ACTUALLY THE PROBLEM IS HERE

实际上问题就在这里。

int success = jsonObject.getInt(TAG_SUCCESS);
                            Log.d("Seen","seen5");
                            if(success == 1){
                                //Entries found
                                Log.d("Seen","seen6");
                                places = jsonObject.getJSONArray(TAG_PRODUCTS);
                                for(int i=0;i hashMap = new HashMap();

                                    hashMap.put(TAG_PID, id);
                                    hashMap.put(TAG_NAME, name);

                                    placesList.add(hashMap);
                                }

                            }
                        } catch (Exception e) {
                            Log.e("success","success status " + e);
                        }       

                        return null;
                    }

                    public void onProExecute(String file_url){
                        pDialog.dismiss();
                        runOnUiThread(new Runnable(){
                            public void run(){
                                ListAdapter listAdapter = new SimpleAdapter(MiddleActivity.this, placesList, R.layout.list_item, new String[]{
                                    TAG_PID, TAG_NAME},new int[]{R.id.ID, R.id.Name});
                                ListView listView = (ListView) findViewById(R.layout.list_item);
                                listView.setAdapter(listAdapter);
                                };  
                            });
                        };
                    }

                @Override
                public boolean onCreateOptionsMenu(Menu menu) {
                    // Inflate the menu; this adds items to the action bar if it is present.
                    getMenuInflater().inflate(R.menu.activity_middle, menu);
                    return true;
                }


                }

         **and log cat is**



05-07 00:29:54.419: D/Seen(30282): seen1

        05-07 00:29:54.569: D/Seen(30282): seen3

        05-07 00:29:54.909: D/Seen(30282): seen4

        05-07 00:29:54.979: D/String(30282): JSON get_all_products.php

        05-07 00:29:54.979: D/String(30282): db_connect.php

        05-07 00:29:54.979: D/String(30282): db_config.php

        05-07 00:29:54.979: D/String(30282): {"success":0,"message":"No products found
        05-07 00:29:55.300: D/String(30282): JSON 1

        05-07 00:29:55.300: D/String(30282): JSON 2

        05-07 00:29:55.310: D/Seen(30282): seen2

    **05-07 00:29:55.310: E/success(30282): success status 

java.lang.NullPointerException**


and here is my jsonparser class
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

public class JSONParser {

    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";

    // constructor
    public JSONParser() {

    }

    // function get json from url
    // by making HTTP POST or GET method
    public JSONObject makeHttpRequest(String url, String method,
            List params) {

        // Making HTTP request
        try {

            // check for request method
            if(method == "POST"){
                // request method is POST
                // defaultHttpClient
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity(params));

                HttpResponse httpRespOnse= httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();

            }else if(method == "GET"){
                // request method is GET
                DefaultHttpClient httpClient = new DefaultHttpClient();
                String paramString = URLEncodedUtils.format(params, "utf-8");
                url += "?" + paramString;
                HttpGet httpGet = new HttpGet(url);

                HttpResponse httpRespOnse= httpClient.execute(httpGet);
                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;

    }
}

1 个解决方案

#1


0  

Your jsonObject is null, debug the app by setting breakpoint at line->

您的jsonObject是null,通过在line->上设置断点来调试app。

JSONObject jsOnObject= jsonParser.makeHttpRequest(URL, "GET" ,params);

And check value of jsonObject.

并检查jsonObject的值。


推荐阅读
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
author-avatar
mobiledu2502873927
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有