HttpUrlConnection与HttpClient的认识(四) -HttpClient的封装
来源:互联网 发布:卖时时彩源码违法吗 编辑:程序博客网 时间:2024/06/05 16:52
import org.apache.commons.httpclient.*;import org.apache.commons.httpclient.methods.*;import org.apache.commons.httpclient.params.HttpMethodParams;import java.io.*;import java.util.List;import java.util.Map;import java.util.Set;import java.util.zip.GZIPInputStream;public class HttpClientUtil { /** * 使用post方式调用 * @param url 调用的URL * @param values 传递的参数值List * @param charSet设置内容的编码格式 * @return 调用得到的字符串 */ public static String httpClientPost(String url,List<NameValuePair[]> values,String charSet){ StringBuilder sb =new StringBuilder(); HttpClient httpClient = new HttpClient(); PostMethod postMethod = new PostMethod(url); //创建参数队列 for (NameValuePair[] value : values) { postMethod.addParameters(value); } try { httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, charSet); httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(3000); httpClient.getHttpConnectionManager().getParams().setSoTimeout(3000); int statusCode = httpClient.executeMethod(postMethod); if(statusCode != 200){ return ""; } //以流的行式读入,避免中文乱码 InputStream is = postMethod.getResponseBodyAsStream(); BufferedReader dis=new BufferedReader(new InputStreamReader(is,"utf-8")); String str =""; while((str =dis.readLine())!=null){ sb.append(str); sb.append("\r\n"); // 换行 } } catch (Exception e) { e.printStackTrace(); }finally{ postMethod.releaseConnection(); } return sb.toString(); } /** * 使用get方式调用 * @param url调用的URL * @return 调用得到的字符串 */ public static String httpClientGet(String url,String charSet){ StringBuilder sb =new StringBuilder(); HttpClient httpClient = new HttpClient(); GetMethod getMethod = new GetMethod(url); getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,new DefaultHttpMethodRetryHandler()); try { // 执行getMethod httpClient.executeMethod(getMethod); //以流的行式读入,避免中文乱码 InputStream is = getMethod.getResponseBodyAsStream(); BufferedReader dis=new BufferedReader(new InputStreamReader(is,charSet)); String str =""; while((str =dis.readLine())!=null){ sb.append(str); } } catch (Exception e) { e.printStackTrace(); } finally { // 关闭连接 getMethod.releaseConnection(); } return sb.toString(); } /** * 将MAP转换成HTTP请求参数 * @param pairArr * @return */ public static NameValuePair[] praseParameterMap(Map<String, String> map){ NameValuePair[] nvps = new NameValuePair[map.size()]; Set<String> keys = map.keySet(); int i=0; for(String key:keys){ nvps[i] = new NameValuePair(); nvps[i].setName(key); nvps[i].setValue(map.get(key)); i++; } return nvps; } /** * 使用post方式调用 * @param url 调用的URL * @param values 传递的参数值 * @param xml 传递的xml参数 * @return */ public static String httpClientPost(String url, NameValuePair[] values, String xml){ StringBuilder sb = new StringBuilder(); HttpClient client = new HttpClient(); client.getParams().setParameter( HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8"); PostMethod method = new PostMethod(url); method.setQueryString(values); method.addRequestHeader("Content-Type", "text/xml;charset=UTF-8"); RequestEntity reis = null; InputStream input = null; InputStream is = null; BufferedReader dis = null; try { input = new ByteArrayInputStream(xml.getBytes("utf-8")); reis = new InputStreamRequestEntity(input); method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler()); method.setRequestEntity(reis); client.executeMethod(method); // 以流的行式读入,避免中文乱码 is = method.getResponseBodyAsStream(); dis = new BufferedReader(new InputStreamReader(is, "utf-8")); String str = ""; while ((str = dis.readLine()) != null) { sb.append(str); } } catch (HttpException ex) { ex.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { method.releaseConnection(); try { if (dis != null) dis.close(); if (is != null) is.close(); if (input != null) input.close(); } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } public static String httpGzipGet(String url,String charset){ HttpClient httpclient = new HttpClient(); GetMethod method = new GetMethod(url); method.addRequestHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.79 Safari/537.1"); method.addRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); method.addRequestHeader("Accept-Encoding", "gzip,deflate,sdch");//gzip解压缩必须属性 InputStream in = null; GZIPInputStream gzin = null; InputStreamReader isr = null; BufferedReader br = null; try { httpclient.executeMethod(method); if(method.getStatusCode() == HttpStatus.SC_OK){ Header respHead = method.getResponseHeader("Content-Encoding"); if(respHead != null){ String contEncoding = respHead.getValue(); if(contEncoding != null && contEncoding.toLowerCase().indexOf("gzip") > -1){ in = method.getResponseBodyAsStream(); gzin = new GZIPInputStream(in); isr = new InputStreamReader(gzin,charset); br = new BufferedReader(isr); String temp = ""; StringBuffer result = new StringBuffer(); if((temp = br.readLine()) != null){ result.append(temp); } return result.toString(); }else{ return httpClientGet(url,charset); } }else{ return null; } }else{ return null; } } catch (Exception e) { e.printStackTrace(); return null; } finally{ try{ if(br != null){ br.close(); br = null; } if(isr != null){ isr.close(); isr = null; } if(gzin != null){ gzin.close(); gzin = null; } if(in != null){ in.close(); in = null; } if(method != null){ method.releaseConnection(); method = null; } }catch(IOException e){ e.printStackTrace(); } } } public static String httpClientPostJson(String url, String jsonStr){ if (jsonStr == null) return null; StringBuilder sb = new StringBuilder(); HttpClient httpClient = new HttpClient(); httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8"); httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(300); httpClient.getHttpConnectionManager().getParams().setSoTimeout(700); PostMethod postMethod = new PostMethod(url); try { StringRequestEntity entity = new StringRequestEntity(jsonStr, "application/json", "utf-8"); postMethod.setRequestEntity(entity); int statusCode = httpClient.executeMethod(postMethod); if (statusCode != 200) { return ""; } //以流的行式读入,避免中文乱码 InputStream is = postMethod.getResponseBodyAsStream(); BufferedReader dis = new BufferedReader(new InputStreamReader(is, "utf-8")); String str; while ((str = dis.readLine()) != null) { sb.append(str); } } catch (Exception e) { e.printStackTrace(); } finally { postMethod.releaseConnection(); } return sb.toString(); }}
0 0
- HttpUrlConnection与HttpClient的认识(四) -HttpClient的封装
- HttpUrlConnection与HttpClient的认识(四) -HttpClient的封装
- HttpUrlConnection与HttpClient的认识(三)-HttpClient的使用
- HttpUrlConnection与HttpClient的认识(三)-HttpClient的使用
- HttpUrlConnection与HttpClient的认识(一)-HttpUrlConnection的使用
- HttpUrlConnection与HttpClient的认识(一)-HttpUrlConnection的使用
- HttpUrlConnection与HttpClient的认识(七) -HttpClient的线程安全问题
- HttpUrlConnection与HttpClient的认识(七) -HttpClient的线程安全问题
- Android中HttpURLConnection与HttpClient的使用与封装
- HttpURLConnection与HttpClient的不同
- httpurlconnection与httpclient的使用
- HTTPClient与HttpURLConnection的区别
- HttpUrlConnection与HttpClient的认识(二)-请求头信息的问题
- HttpUrlConnection与HttpClient的认识(二)-请求头信息的问题
- HttpUrlConnection与HttpClient的认识(六) -实际应用之刷网络流量
- HttpUrlConnection与HttpClient的认识(六) -实际应用之刷网络流量
- HttpClient与HttpURLConnection的请求方式
- HttpClient与HttpURLConnection的请求方式
- Intel 指令手册速查
- C# Dictionary
- boosting-bagging
- java中的static总结
- 分析mysql慢查询日志的好工具--mysqlsla
- HttpUrlConnection与HttpClient的认识(四) -HttpClient的封装
- 可变参数列表
- BZOJ 2326: [HNOI2011]数学作业
- 如何保护个人信息安全?
- 谈谈对Spring IOC的理解
- React Native系列之flexbox布局(伸缩属性)
- hive常见操作语句--创建表语句
- Intellij IDEA 出现“Usage of API documented as @since 1.6+”的解决办法
- STM32编译错误汇总(一)