在Android应用程序中从mysql获取数据时出错

时间:2016-04-06 08:57:03

标签: android json

我试图通过使用Json解析的Android应用程序上的MySql获取数据,为什么通过Json解析数据?

这是我的代码:

            HttpClient hp=new DefaultHttpClient(new BasicHttpParams());
            HttpPost post=new HttpPost(Globals.webUrl+"diseases.php");  // add domain name as argument
                try{
                    HttpResponse res=hp.execute(post);
                    InputStream in=res.getEntity().getContent();
                    BufferedReader bf=new BufferedReader(new InputStreamReader(in));

                    String temp="";
                    while((temp=bf.readLine())!=null)
                    {
                        s.append(temp+"\n");
                    }
                    System.out.println(s.toString());

                    Log.e("data", s.toString());
                    JSONObject obj=new JSONObject(s.toString());
                    JSONArray jr=obj.getJSONArray("ar");
                    for(int i=0;i<jr.length();i++)
                    {
                        JSONObject jb=jr.getJSONObject(i);
                        if(jb!=null)
                        //ar.add(jb.get("id").toString());
                        ar.add(jb.get("disease").toString());
                        //adp.add(jb.get("diseases").toString());
                        arDiseaseId.add(jb.get("id"));
                        }


                }
                catch(Exception e)
                {
                    e.printStackTrace();
                }

我在PHP文件中获取数据(采用Json格式)

{"ar":[{"id":"1","disease":"Achondroplsia"},{"id":"2","disease":"Acidic Reflux"},{"id":"3","disease":"Acne"},{"id":"4","disease":"Addison's Disease"},{"id":"5","disease":"Alcoholism"},{"id":"6","disease":"Allergies"},{"id":"7","disease":"Alzheimer's Disease"},{"id":"8","disease":"Amenorrhea"},{"id":"9","disease":"Anal Fissure"},{"id":"10","disease":"Anemia"},{"id":"11","disease":"Angina Pectoris"},{"id":"12","disease":"Anorexia Nervosa"},{"id":"13","disease":"Anthrax"},{"id":"14","disease":"Anxiety Disorder"},{"id":"15","disease":"Appendicitis"},{"id":"16","disease":"Arthritis"},{"id":"17","disease":"Asthma"},{"id":"18","disease":"Autism"},{"id":"19","disease":"Avian influenza"},{"id":"20","disease":"BPD"},{"id":"21","disease":"Back Pain"},{"id":"22","disease":"Baldness"}]}

但不是在Android应用中。

2 个答案:

答案 0 :(得分:1)

使用volley库进行json解析,很容易理解和实现。 Android JSON parsing using Volley

答案 1 :(得分:1)

试试这段代码:

DefaultHttpClient   hp = new DefaultHttpClient(new BasicHttpParams());
HttpPost post = new HttpPost(Globals.webUrl+"diseases.php");
// Depends on your web service
post.setHeader("Content-type", "application/json");

InputStream in = null;
String result = null;
try {
    HttpResponse res = hp.execute(post);           
    HttpEntity entity = res.getEntity();

    in = entity.getContent();
    // json is UTF-8 by default
    BufferedReader bf = new BufferedReader(new InputStreamReader(in, "UTF-8"), 8);
    StringBuilder s = new StringBuilder();

    String temp = null;
    while ((temp = bf.readLine()) != null)
    {
        s.append(temp + "\n");
    }
    Log.e("data", s.toString());
    result = s.toString();

    JSONObject jObject = new JSONObject(result);
    JSONArray jr = jObject.getJSONArray("ar");
    for (int i=0; i < jr.length(); i++)
    {
        try {
            JSONObject jb = jr.getJSONObject(i);
            if(jb!=null)
            //ar.add(jb.get("id").toString());
            ar.add(jb.get("disease").toString());
            //adp.add(jb.get("diseases").toString());
            arDiseaseId.add(jb.get("id"));
        } catch (JSONException e) {
            // Oops
        }
    }
} catch (Exception e) { 
    // Oops
}
finally {
    try{if(in != null)in.close();}catch(Exception squish){}
}

如果它仍然无效,我认为您的服务器有问题。我已经检查了这段代码并且它正常工作。