前几天刚入职,研究了一下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; }
注意:这些操作必须在线程中运行
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/qq_22605739/article/details/47081661