美文网首页Android网络请求
Android网络请求&JSON解析

Android网络请求&JSON解析

作者: 314 | 来源:发表于2015-08-24 18:43 被阅读647次

    网络请求

    1、定义一个方法,并在方法中通过新建匿名类Thread,在Thread参数Runnable中重载run()方法,实际的网络请求就写在run()方法中。

     protected void sendRequstWithHttpClient(){
           new Thread(new Runable()(
                     public void run(){}))
            .start();}
    

    2、定义run()当中的网络方法:创建HttpClient和HttpGet实例,并通过HttpClient的execute()方法得到HttpResponse实例,并把HttpResponse实例转化为Entity实例(转化前一般先判断是否请求成功,即http状态码为200)。

      HttpClient httpClient = new DefaultHttpClient(); 
      HttpGet httpGet = new HttpGet("http://XXX");
      HttpResponse httpResponse = httpClient.execute(httpGet); 
      if (httpResponse.getStatusLine().getStatusCode() == 200) {
         HttpEntity entity = httpResponse.getEntity(); 
    

    疑问:
    a、为啥要把HttpResponse转化为Entity,是不是Entity才能进行字符串的操作?

    3、把entity实例转化为JSON形式的字符串,然后对字符串做解析。

         String response = EntityUtils.toString(entity,"utf-8");
            //EntityUtils为Entity的帮助类,感觉有点像String和StringBuilder。
             parseJSONWithJSONObject(response);//自处定义的方法即为解析JSON
    

    JSON解析
    1、创建一个JSONArray对象(如果仅接受一条数据,也可以直接用JSONObject接收)

       JSONArray jsonArray = new JSONArray(jsonData);
    

    2、对JSONArray中的数据做遍历动作。

      for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    ...    
                }
    

    注意事项:
    1、Tread(new Runable(){public void run()}).start();中的run()方法实际为一个try-catch语句:

         try{
                 网络请求语句块;}
        catch(Exception e){
                          e.printStackTrace;}
    

    2、对JSON数组进行解析时也需要用try-catch语句块:

     try{
             解析遍历JSON语句;}
    catch(Exception e){
                                        e.printStackTrace;}
    

    相关文章

      网友评论

        本文标题:Android网络请求&JSON解析

        本文链接:https://www.haomeiwen.com/subject/pqfqcttx.html