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

    更多技术交流+QQ:318617848
  • 相关阅读:
    线程池
    交互
    Java类文件的结构详细介绍
    redis
    弹幕
    约瑟夫环问题
    Redis数据类型和应用场景
    Java集合类整体结构
    JDBC详细介绍
    Mybatis万能Map
  • 原文地址:https://www.cnblogs.com/huyaguang/p/5859365.html
Copyright © 2011-2022 走看看