• httpclient4封装类


    package com.kcb.common.util;
    
    import java.io.File;
    import java.io.IOException;
    import java.net.URI;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import java.util.concurrent.TimeUnit;
    
    import org.apache.commons.io.FileUtils;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.HttpStatus;
    import org.apache.http.NameValuePair;
    import org.apache.http.ParseException;
    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.ClientPNames;
    import org.apache.http.client.params.CookiePolicy;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.protocol.HTTP;
    import org.apache.http.util.EntityUtils;
    
    /**
     * @author  zhf
     * @version 创建时间:2013-6-28 下午3:42:46 httpclient4工具类
     */
    public class HttpClient4Util {
    
    	private static HttpClient4Util HTTP_CLIENT4_UTIL = null;
    
    	/**
    	 * 单例获取
    	 * 
    	 * @return
    	 */
    	public HttpClient4Util getInstanct() {
    		if (HTTP_CLIENT4_UTIL == null) {
    			HTTP_CLIENT4_UTIL = new HttpClient4Util();
    		}
    		return HTTP_CLIENT4_UTIL;
    	}
    
    	private static HttpClient httpclient = new DefaultHttpClient();
    
    	static {
    		// 设置Cookie的兼容性
    		httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY);
    		httpclient.getConnectionManager().closeIdleConnections(10, TimeUnit.SECONDS);
    
    	}
    
    	/**
    	 * 调用请求接口
    	 * 
    	 * @param urlstr
    	 * @return
    	 */
    	public static String get(String urlstr) {
    		String html = null;
    		try {
    			html = get(urlstr, 0);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return html;
    	}
    
    	/**
    	 * get 请求5次
    	 * 
    	 * @param urlstr
    	 * @return html
    	 * @throws Exception
    	 */
    	public static String get(String urlstr, int count) throws Exception {
    		String html = null;
    		count++;
    		if (count > 5) {
    			throw new Exception();// 这里可以抛出请求超时异常
    		}
    		URL url = new URL(urlstr);
    		URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(), url.getQuery(), null);
    		HttpGet httpget = new HttpGet(uri);
    		HttpResponse response = httpclient.execute(httpget);
    		HttpEntity httpEntity = response.getEntity();
    		if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK && httpEntity != null) {
    			html = EntityUtils.toString(httpEntity, "utf-8");
    			httpEntity.consumeContent();
    		} else {
    			html = get(urlstr, count);
    		}
    
    		return html;
    	}
    
    	/**
    	 * 获取文件
    	 * 
    	 * @param urlstr
    	 * @param file
    	 */
    	public static void get(String urlstr, String file) {
    		try {
    			URL url = new URL(urlstr);
    			URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(), url.getQuery(), null);
    			HttpGet httpGet = new HttpGet(uri);
    			HttpResponse response = httpclient.execute(httpGet);
    			HttpEntity httpEntity = response.getEntity();
    
    			if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK && httpEntity != null) {
    				byte[] b = EntityUtils.toByteArray(httpEntity);
    				FileUtils.writeByteArrayToFile(new File(file), b);
    			}
    			httpEntity.consumeContent();
    			// EntityUtils.consume(httpEntity);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    
    	}
    
    	/**
    	 * post请求
    	 * 
    	 * @param url
    	 * @param map
    	 * @return
    	 */
    	public String post(String url, Map<String, String> map) {
    		List<NameValuePair> nvps = new ArrayList<NameValuePair>();
    		for (String key : map.keySet()) {
    			NameValuePair nvp = new BasicNameValuePair(key, map.get(key));
    			nvps.add(nvp);
    		}
    
    		String html = null;
    		try {
    			HttpPost httpPost = new HttpPost(url);
    			httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
    			HttpResponse response = httpclient.execute(httpPost);
    
    			HttpEntity httpEntity = response.getEntity();
    			if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK && httpEntity != null) {
    				html = EntityUtils.toString(httpEntity, "utf-8");
    				// EntityUtils.consume(httpEntity);
    				httpEntity.consumeContent();
    
    			}
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return html;
    	}
    
    }
    

      需要添加httpclient和相应的common扎包。

  • 相关阅读:
    bridge桥接模式
    docker部署mysql实现远程访问
    翻下旧资料,发现96年考过foxbase二级
    这几年专注于流程管理与RPA落地
    201521123080《Java程序设计》第10周学习总结
    201521123034《Java程序设计》第十周学习总结
    Beta版本冲刺计划及安排
    团队作业7——Alpha冲刺之事后诸葛亮
    团队作业6——展示博客(Alpha版本)
    团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天
  • 原文地址:https://www.cnblogs.com/cxyzl/p/3165205.html
Copyright © 2020-2023  润新知