Android网络请求&JSON解析

网络请求

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解析)