老版本HttpClientUtil-2014

较老类的httputil,用着方便

	
	 public static void main(String[] args) throws Exception {
		 JSONObject reqJson=new JSONObject();
		 reqJson.put("REMARK", "闹着玩");
		 JSONObject json = new JSONObject();
		 json.put("SSS", "DDD");
		 List<NameValuePair> nvps = new ArrayList<NameValuePair>();
         nvps.add(new BasicNameValuePair("REQ", json.toString()));
         HttpClientUtil httpClientUtil = new HttpClientUtil();
		 String resultstr = httpClientUtil.getResponseString(url, nvps);
        System.out.println("解密返回数据: "+resultstr);
	 }


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.SocketTimeoutException;
import java.util.List;

import net.sf.json.JSONObject;

import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
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.conn.ConnectTimeoutException;
import org.apache.http.conn.params.ConnRouteParams;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;


public class HttpClientUtil {
	
	private Logger logger = LogManager.getLogger("HttpClientUtil");
	
	private HttpClient httpClient;
	
	public HttpClientUtil() {
		/**
		 * new ThreadSafeClientConnManager()
		 * 解决:
		 * 	Invalid use of SingleClientConnManager: connection still allocated. Make sure to release the connec...
		 * 	在多线程环境下,使用 httpclient.xxx.jar包的 new DefaultHttpClient() ; 构造函数创建的client客户端将会引发以下这个错误:
		 */
		httpClient = new DefaultHttpClient(new ThreadSafeClientConnManager());
		httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10000);
        // 读取超时
	    httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000 );
	}
	
	public HttpClient getHttpClient() {
		return this.httpClient;
	}
	
	/**
	 * 获取HttpResponse状态号
	 * @param url
	 * @param nvps 为null则以HttpGet方式请求
	 * @return
	 * @throws ClientProtocolException
	 * @throws IOException
	 */
	public int getResponseStatusCode(String url, List<NameValuePair> nvps)
		throws ClientProtocolException, IOException {
		HttpResponse hr = getResponse(url, nvps);
		EntityUtils.consume(hr.getEntity());
		return hr.getStatusLine().getStatusCode();
	}
	
	/**
	 * 获取HttpResponse字符串
	 * @param url
	 * @param nvps 为null则以HttpGet方式请求
	 * @return
	 * @throws ClientProtocolException
	 * @throws IOException
	 */
	public String getResponseString(String url, List<NameValuePair> nvps)
		throws ClientProtocolException, IOException {
		HttpResponse response = getResponse(url, nvps);
		
		String body="";
        if (null==response || response.equals("")) {
			return body;
		} 
		int code = response.getStatusLine().getStatusCode();
		if (code == HttpStatus.SC_OK) {
			BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
	        String inputLine;
	        StringBuffer responseResult = new StringBuffer();
	        while ((inputLine = reader.readLine()) != null) {
	        	responseResult.append(inputLine);
	        }
	        reader.close();
	        body=responseResult.toString();
		}else{
			
			System.out.println("======状态码异常===="+code);
		}
		
		return body;
	}
	
	/**
	 * 获取HttpResponse字节数组
	 * @param url
	 * @param nvps 为null则以HttpGet方式请求
	 * @return
	 * @throws ClientProtocolException
	 * @throws IOException
	 */
	public byte[] getResponseByteArray(String url, List<NameValuePair> nvps)
		throws ClientProtocolException, IOException {
		HttpEntity he = getEntity(url, nvps);
		byte[] result = EntityUtils.toByteArray(he);
		EntityUtils.consume(he);
		return result;
	}

	/**
	 * 获取HttpResponse字符串
	 * @param url
	 * @param nvps 为null则以HttpGet方式请求
	 * @return
	 * @throws ClientProtocolException
	 * @throws IOException
	 */
	public String getResponseStr(String url, JSONObject nvps)
			throws ClientProtocolException, IOException {
		HttpEntity he = getEntity(url, nvps);
		String result = EntityUtils.toString(he, HTTP.UTF_8);
		EntityUtils.consume(he);
		return result;
	}
	
	/**
	 * 获取HttpEntity
	 * @param url
	 * @param nvps 为null则以HttpGet方式请求
	 * @return
	 * @throws ClientProtocolException
	 * @throws IOException
	 */
	public HttpEntity getEntity(String url, List<NameValuePair> nvps)
		throws ClientProtocolException, IOException {
		return getResponse(url, nvps).getEntity();
	}

	/**
	 * 获取HttpEntity
	 * @param url
	 * @param nvps 为null则以HttpGet方式请求
	 * @return
	 * @throws ClientProtocolException
	 * @throws IOException
	 */
	public HttpEntity getEntity(String url, JSONObject nvps)
			throws ClientProtocolException, IOException {
		return getResponse(url, nvps).getEntity();
	}
	
	/**
	 * 获取HttpResponse
	 * @param url
	 * @param nvps 为null则以HttpGet方式请求
	 * @return
	 * @throws IOException
	 */
	public HttpResponse getResponse(String url, List<NameValuePair> nvps)
		throws IOException{
		 HttpResponse execute = null;
	
		if (nvps != null) {
			//Post
			HttpPost hp = new HttpPost(url);
			
			hp.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
			try {
				execute= httpClient.execute(hp);
			} catch (SocketTimeoutException e) {
				logger.warn("Post接口返回超时  SocketTimeoutException: "+url);
				e.printStackTrace();
			} catch (ConnectTimeoutException e) {
				logger.warn("Post接口返回超时 ConnectTimeoutException : "+url);
				e.printStackTrace();
			}
		} else {
			//Get
			HttpGet hg = new HttpGet(url);
			try {
				execute= httpClient.execute(hg);
			} catch (SocketTimeoutException e) {
				logger.warn("Get接口返回超时 SocketTimeoutException : "+url);
				e.printStackTrace();
			} catch (ConnectTimeoutException e) {
				logger.warn("get接口返回超时 ConnectTimeoutException : "+url);
				e.printStackTrace();
			}
			
			
		}
		
	    return execute;
	}

	/**
	 * 获取HttpResponse
	 * @param url
	 * @param nvps 为null则以HttpGet方式请求
	 * @return
	 * @throws ClientProtocolException
	 * @throws IOException
	 */
	public HttpResponse getResponse(String url, JSONObject nvps)
			throws ClientProtocolException, IOException {
		 HttpResponse execute = null;
		if (nvps != null) {
			//Post
			HttpPost hp = new HttpPost(url);
			hp.setEntity(new StringEntity(nvps.toString(), HTTP.UTF_8));
		
			try {
				execute= httpClient.execute(hp);
			} catch (SocketTimeoutException e) {
				logger.warn("Post接口返回超时  SocketTimeoutException: "+url);
				e.printStackTrace();
			} catch (ConnectTimeoutException e) {
				logger.warn("Post接口返回超时 ConnectTimeoutException : "+url);
				e.printStackTrace();
			}
		} else {
			//Get
			HttpGet hg = new HttpGet(url);
			try {
				execute= httpClient.execute(hg);
			} catch (SocketTimeoutException e) {
				logger.warn("Post接口返回超时  SocketTimeoutException: "+url);
				e.printStackTrace();
			} catch (ConnectTimeoutException e) {
				logger.warn("Post接口返回超时 ConnectTimeoutException : "+url);
				e.printStackTrace();
			}
			
		}
		
		 return execute;
	}
	
	/**
	 *   定义json传输参数
	 * @param url
	 * @param nvps
	 * @return
	 * @throws ClientProtocolException
	 * @throws IOException
	 */
	public HttpResponse getResponseJson(String url, JSONObject nvps)
			throws ClientProtocolException, IOException {
		 HttpResponse execute = null;
		if (nvps != null) {
			//Post
			HttpPost hp = new HttpPost(url);
			hp.setEntity(new StringEntity(nvps.toString(), HTTP.UTF_8));
			hp.setHeader("Content-Type", "application/json;charset=UTF-8");
			try {
				execute= httpClient.execute(hp);
			} catch (SocketTimeoutException e) {
				logger.warn("Post接口返回超时  SocketTimeoutException: "+url);
				e.printStackTrace();
			} catch (ConnectTimeoutException e) {
				logger.warn("Post接口返回超时 ConnectTimeoutException : "+url);
				e.printStackTrace();
			}
		} else {
			//Get
			HttpGet hg = new HttpGet(url);
			try {
				execute= httpClient.execute(hg);
			} catch (SocketTimeoutException e) {
				logger.warn("Post接口返回超时  SocketTimeoutException: "+url);
				e.printStackTrace();
			} catch (ConnectTimeoutException e) {
				logger.warn("Post接口返回超时 ConnectTimeoutException : "+url);
				e.printStackTrace();
			}
			
		}
		
		 return execute;
	}
	
	
	
	
	public HttpResponse getResponsestr(String url, String nvps)
			throws ClientProtocolException, IOException {
		 HttpResponse execute = null;
		if (nvps != null) {
			//Post
			HttpPost hp = new HttpPost(url);
			hp.setEntity(new StringEntity(nvps.toString(), HTTP.UTF_8));
			hp.setHeader("Content-Type", "application/json;charset=UTF-8");
			try {
				execute= httpClient.execute(hp);
			} catch (SocketTimeoutException e) {
				logger.warn("Post接口返回超时  SocketTimeoutException: "+url);
				e.printStackTrace();
			} catch (ConnectTimeoutException e) {
				logger.warn("Post接口返回超时 ConnectTimeoutException : "+url);
				e.printStackTrace();
			}
		} else {
			//Get
			HttpGet hg = new HttpGet(url);
			try {
				execute= httpClient.execute(hg);
			} catch (SocketTimeoutException e) {
				logger.warn("Post接口返回超时  SocketTimeoutException: "+url);
				e.printStackTrace();
			} catch (ConnectTimeoutException e) {
				logger.warn("Post接口返回超时 ConnectTimeoutException : "+url);
				e.printStackTrace();
			}
			
		}
		
		 return execute;
	}
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值