HttpClient获取并解析JSON数据

来源:互联网 发布:农村淘宝绑定服务站 编辑:程序博客网 时间:2024/06/11 03:49


下面的类已经说的很明白了

package com.example.testjsonandget;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.client.params.HttpClientParams;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.params.BasicHttpParams;import org.apache.http.params.HttpConnectionParams;import org.apache.http.params.HttpParams;import org.json.JSONArray;import org.json.JSONObject; import android.app.Activity;import android.os.Bundle; public class MainActivity extends Activity {    private final String uriString="your url";    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //服务器返回的JSON数据        JSONObject jsonObject=this.getJSONObjectByGet();        try {            //从JSON中得到字符串            String apiString=jsonObject.getString("api");            String countString=jsonObject.getString("count");            System.out.println("apiString="+apiString+",countString="+countString);            //从JSON中得到JSONArray,并且遍历            JSONArray jsonArray=jsonObject.getJSONArray("data");            for (int i = 0; i < jsonArray.length(); i++) {                JSONObject everyJsonObject=jsonArray.getJSONObject(i);                String category_id=everyJsonObject.getString("category_id");                String category_name=everyJsonObject.getString("category_name");                String category_rgb=everyJsonObject.getString("category_rgb");                String category_news_count=everyJsonObject.getString("category_news_count");                System.out.println("category_id="+category_id+",category_name="+category_name+                ",category_rgb="+category_rgb+",category_news_count="+category_news_count);                System.out.println("=====================================================");            }        } catch (Exception e) {            e.printStackTrace();        }    }     //得到HttpClient    public HttpClient getHttpClient(){        HttpParams mHttpParams=new BasicHttpParams();        //设置网络链接超时        //即:Set the timeout in milliseconds until a connection is established.        HttpConnectionParams.setConnectionTimeout(mHttpParams, 20*1000);        //设置socket响应超时        //即:in milliseconds which is the timeout for waiting for data.        HttpConnectionParams.setSoTimeout(mHttpParams, 20*1000);        //设置socket缓存大小        HttpConnectionParams.setSocketBufferSize(mHttpParams, 8*1024);        //设置是否可以重定向        HttpClientParams.setRedirecting(mHttpParams, true);                 HttpClient httpClient=new DefaultHttpClient(mHttpParams);        return httpClient;    }         //得到JSONObject(Get方式)    public JSONObject getJSONObjectByGet(){        JSONObject resultJsonObject=null;        if ("".equals(uriString)||uriString==null) {            return null;        }        HttpClient httpClient=this.getHttpClient();        StringBuilder urlStringBuilder=new StringBuilder(uriString);        StringBuilder entityStringBuilder=new StringBuilder();        //利用URL生成一个HttpGet请求        HttpGet httpGet=new HttpGet(urlStringBuilder.toString());        BufferedReader bufferedReader=null;        HttpResponse httpResponse=null;        try {            //HttpClient发出一个HttpGet请求            httpResponse=httpClient.execute(httpGet);              } catch (Exception e) {            e.printStackTrace();        }        //得到httpResponse的状态响应码        int statusCode=httpResponse.getStatusLine().getStatusCode();        if (statusCode==HttpStatus.SC_OK) {            //得到httpResponse的实体数据            HttpEntity httpEntity=httpResponse.getEntity();            if (httpEntity!=null) {                try {                    bufferedReader=new BufferedReader                    (new InputStreamReader(httpEntity.getContent(), "UTF-8"), 8*1024);                    String line=null;                    while ((line=bufferedReader.readLine())!=null) {                        entityStringBuilder.append(line+"/n");                    }                    //利用从HttpEntity中得到的String生成JsonObject                    resultJsonObject=new JSONObject(entityStringBuilder.toString());                } catch (Exception e) {                    e.printStackTrace();                }            }        }        return resultJsonObject;    }         //----------------------------------------以下为POST请求    //准备进行POST请求的参数,一般而言将这些参数封装在HashMap中    public JSONObject save(String title, String timelength) throws Exception{        Map<String,String> paramsHashMap = new HashMap<String, String>();        paramsHashMap.put("title", title);        paramsHashMap.put("timelength", timelength);        paramsHashMap.put("method", "save");        String path = "your url";        return getJSONObjectByPost(path, paramsHashMap, "UTF-8");    }    //得到JSONObject(Post方式)    //此方法此处未调用测试    public JSONObject getJSONObjectByPost(String path,Map<String, String> paramsHashMap, String encoding) {        JSONObject resultJsonObject = null;        List<NameValuePair> nameValuePairArrayList = new ArrayList<NameValuePair>();        // 将传过来的参数填充到List<NameValuePair>中        if (paramsHashMap != null && !paramsHashMap.isEmpty()) {            for (Map.Entry<String, String> entry : paramsHashMap.entrySet()) {                nameValuePairArrayList.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));            }        }                 UrlEncodedFormEntity entity = null;        try {            // 利用List<NameValuePair>生成Post请求的实体数据            // 此处使用了UrlEncodedFormEntity!!!            entity = new UrlEncodedFormEntity(nameValuePairArrayList, encoding);            HttpPost httpPost = new HttpPost(path);            // 为HttpPost设置实体数据            httpPost.setEntity(entity);            HttpClient httpClient = this.getHttpClient();            // HttpClient发出Post请求            HttpResponse httpResponse = httpClient.execute(httpPost);            if (httpResponse.getStatusLine().getStatusCode() == 200) {                // 得到httpResponse的实体数据                HttpEntity httpEntity = httpResponse.getEntity();                if (httpEntity != null) {                    try {                        BufferedReader bufferedReader = new BufferedReader(                        new InputStreamReader(httpEntity.getContent(),"UTF-8"), 8 * 1024);                        StringBuilder entityStringBuilder = new StringBuilder();                        String line = null;                        while ((line = bufferedReader.readLine()) != null) {                            entityStringBuilder.append(line + "/n");                        }                        // 利用从HttpEntity中得到的String生成JsonObject                        resultJsonObject = new JSONObject(entityStringBuilder.toString());                    } catch (Exception e) {                        e.printStackTrace();                    }                }            }        } catch (Exception e) {            e.printStackTrace();        }        return resultJsonObject;    }}


0 0
原创粉丝点击