zoukankan      html  css  js  c++  java
  • android通过httpClient请求获取JSON数据并且解析

    使用.net创建一个ashx文件,并response.write  json格式

    public void ProcessRequest(HttpContext context)

            {

                context.Response.ContentType = "text/plain";

                StringBuilder  jsonBuilder  = new StringBuilder();

                jsonBuilder.Append("{\"parent\":");

                jsonBuilder.Append("{\"children\":");

                jsonBuilder.Append("[");

                jsonBuilder.Append("{\"id\":\"11111\",\"title\":\"aaaaaaa\",\"name\":\"111111111aaaaaaaaaa\"},");

                jsonBuilder.Append("{\"id\":\"22222\",\"title\":\"bbbbbbb\",\"name\":\"222222222aaaaaaaaaa\"},");

                jsonBuilder.Append("{\"id\":\"33333\",\"title\":\"ccccccc\",\"name\":\"33333333aaaaaaaaaa\"}");

                jsonBuilder.Append("]}}");

     

                context.Response.Write(jsonBuilder.ToString());

            }

    android代码

    public class HttpClient_Get_Activity extends Activity {

       public TextView myTextView = null;

       @Override

       protected void onCreate(Bundle savedInstanceState) {

          // TODO Auto-generated method stub

          super.onCreate(savedInstanceState);

          this.setContentView(R.layout.httpget_httpclient_activity);

         

          Button btn = (Button)this.findViewById(R.id.button1);

          btn.setOnClickListener(new Button.OnClickListener(){

     

             @Override

             public void onClick(View v) {

                  new ReadHttpGet().execute("http://190.160.10.79:7890/handler1.ashx");

             }

            

          });

       }

        class ReadHttpGet extends AsyncTask<Object, Object, Object>

        {

     

          @Override

          protected Object doInBackground(Object... params) {

             // TODO Auto-generated method stub

            

             HttpGet httpRequest = new HttpGet(params[0].toString());

             try

             {

                HttpClient httpClient = new DefaultHttpClient();

                HttpResponse httpResponse = httpClient.execute(httpRequest);

               

                if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK)

                {

                    String strResult = EntityUtils.toString(httpResponse.getEntity());

                    return strResult;

                }

                else

                {

                    return "请求出错";

                }

             }

             catch(ClientProtocolException e)

             {

               

             }

             catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

             }

            

             return null;

          }

     

          @Override

          protected void onCancelled(Object result) {

             // TODO Auto-generated method stub

             super.onCancelled(result);

          }

     

          @Override

          protected void onPostExecute(Object result) {

             // TODO Auto-generated method stub

             super.onPostExecute(result);

            

             try

             {

                //创建一个JSON对象

                JSONObject jsonObject = new JSONObject(result.toString()).getJSONObject("parent");

                //获取某个对象的JSON数组

                JSONArray jsonArray = jsonObject.getJSONArray("children");

               

                StringBuilder builder = new StringBuilder();

               

                for(int i = 0; i<jsonArray.length(); i++)

                {

                    //新建一个JSON对象,该对象是某个数组里的其中一个对象

                    JSONObject jsonObject2 = (JSONObject)jsonArray.opt(i);

                   

                    builder.append(jsonObject2.getString("id")); //获取数据

                    builder.append(jsonObject2.getString("title"));

                    builder.append(jsonObject2.getString("name"));

                }

                myTextView.setText(builder.toString());

             }

             catch (JSONException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

             }

            

          }

     

          @Override

          protected void onPreExecute() {

             // TODO Auto-generated method stub

             //super.onPreExecute();

             Toast.makeText(getApplicationContext(), "开始HTTP GET请求", Toast.LENGTH_LONG).show();

          }

     

          @Override

          protected void onProgressUpdate(Object... values) {

             // TODO Auto-generated method stub

             super.onProgressUpdate(values);

          }

          

        }

    }

     android中json的浅薄理解

    JSONObject 表示形式 {"key" : "value"}

    JSONArray 表示形式  [{"key" : "value"},{"key" : "value"},{"key" : "value"}],JSONArray里面包含多个JSONObject

    访问时通过 JSONObject对象去访问,使用 jsonObject.getXXX("key")得到相应的值

    一般解析JSON都使用这两个。

  • 相关阅读:
    021.day21 反射 Class类 反射常用操作
    020.day20 线程概述 多线程优缺点 线程的创建 线程常用方法 生命周期 多线程同步
    019.day19 缓冲流 对象流 标准输入输出流
    018.day18 map集合如何实现排序 File类 IO流 字节流 字符流 编码
    017.day17 Map接口 克隆 treeSet集合排重缺陷
    016.day16 HashSet TreeSet 比较器Comparable Comparator
    015.day15
    014.day14
    013.day13
    线程
  • 原文地址:https://www.cnblogs.com/KimhillZhang/p/3065181.html
Copyright © 2011-2022 走看看