• 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都使用这两个。

  • 相关阅读:
    静态代理和动态代理
    Tomcat的作用思考及NIO的应用(要区分Java NIO和操作系统的NIO模型)
    破坏双亲委托机制的一些情况---Tomcat和JDBC,破坏后的安全问题
    springboot cache---本地缓存的使用
    springboot--异步执行的方法及定时执行的方法
    springboot--事务的使用
    数据结构--堆排序
    数据结构--树的非递归遍历
    最长公共子串的长度和构造
    2015 小结及其2016计划
  • 原文地址:https://www.cnblogs.com/KimhillZhang/p/3065181.html
Copyright © 2020-2023  润新知