Android使用http协议的GET和POST方法!!!

来源:互联网 发布:文华模拟交易软件 编辑:程序博客网 时间:2024/05/20 02:54

前几天刚入职,研究了一下android里面的http协议的get和post请求:

Android里面有HttpClient可以用来访问网页的接口,下面来介绍HttpClient接口的使用,

1.GET:

/**     * GET请求     * @param path 网页路径     * @param params 参数     * @param values 参数的值     * @return JSON     */    public static String doGet(String path,String[] params,String[] values){        try {            HttpClient httpClient = new DefaultHttpClient();//创建httpClient对象            String url = URLParamUtil.praiseGetParams(path, params, values);//组合网页参数            HttpGet httpGet = new HttpGet(url);//创建GET对象            HttpResponse httpResponse = httpClient.execute(httpGet);//开始访问,用HttpResponse来收返回的数据            //如果连接成功,读取数据            if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){                return readData(httpResponse.getEntity().getContent());//通过HttpResponse来获得对应的输出流            }        } catch (ClientProtocolException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return null;    }    /**     * 解析URL     * @param path 路径     * @param params 参数     * @param values 值     * @return URL     */    public static String praiseGetParams(String path,String[] params,String[] values){        String url = "";        //如果params和values为空就返回path        if(params==null||values==null){            url = path;        }        //如果参数和值的大小不同,抛出异常        else if(params.length != values.length){            try {                throw new Exception("参数异常");            } catch (Exception e) {                e.printStackTrace();            }        }        //正常解析情况        else{            url = path + "?";            for(int i=0;i<params.length;i++){                url += (params[i] + "=" + values[i] + "&");            }            //截取最后的一个字符"&"            url = url.substring(0, url.length()-1);        }        return url;    }    /**     * 通过字节输出流读取数据     * @param is     * @return JSON     */    public static String readData(InputStream is){        BufferedReader br = new BufferedReader(new InputStreamReader(is));//将字节输出流转换为字符输出流        StringBuffer sb = new StringBuffer();        String line = "";        try {            line = br.readLine();            //循环读取数据            while(line != null){                sb.append(line + "\n");                line = br.readLine();            }        } catch (IOException e) {            e.printStackTrace();        }        return sb.toString();    }

2.POST

/**     * POST请求     * @param path 网页路径     * @param params 参数     * @param values 参数的值     * @return JSON     */    public static String doPost(String path,String[] params,String[] values){        try {            HttpClient httpClient = new DefaultHttpClient();            HttpPost httpPost = new HttpPost(path); //创建POST对象            //创建参数            List<NameValuePair> pairs = URLParamUtil.praisePostParams(params, values);            HttpEntity entity = new UrlEncodedFormEntity(pairs,"UTF-8");            httpPost.setEntity(entity);            HttpResponse httpResponse = httpClient.execute(httpPost);            // 请求成功开始读取数据            if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){                return readData(httpResponse.getEntity().getContent());            }        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        } catch (ClientProtocolException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return null;    }    /**     * 解析POST参数     * @return pairs     */    public static List<NameValuePair> praisePostParams(String[] params,String[] values){        List<NameValuePair> pairs = new ArrayList<NameValuePair>();        NameValuePair pair = null;        //遍历数组创建参数        for(int i=0;i<params.length;i++){            pair = new BasicNameValuePair(params[i], values[i]);            pairs.add(pair);        }        return pairs;    }


注意:这些操作必须在线程中运行

源代码:https://github.com/alcaicai/HttpUtil


1 0