httpclient 传参请求

package test;


import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URI;
import java.util.UUID;

import org.apache.commons.io.IOUtils;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.springframework.stereotype.Service;


/**
 * 
 * @author Administrator
 *
 */
@Service
public class HttpclientConnectUtil {
	/**
	 * @param url
	 * @param body
	 * @param msgCode
	 * @param versionCode
	 * @param publicKey
	 * @return
	 */
	public String getResponse(String url, String body, String msgCode, String versionCode, String publicKey) {
		byte[] bodyByte = new byte[0];
		String returnMsg = "";
		HttpURLConnection conn = null;
		InputStream is = null;
		try {
			conn = (HttpURLConnection) new URI(url).toURL().openConnection();
			if(versionCode.equals("0")) {
				bodyByte = body.getBytes("UTF-8");
			} else {
				bodyByte = ClientCrypt.encrypt(body.getBytes("UTF-8"), publicKey);
			}
			
			conn.setRequestMethod("POST");
			conn.setDoOutput(true);
			conn.setRequestProperty("Accept-Charset", "UTF-8");
			conn.setRequestProperty("Content-Type", GlobalInfo.CONTENT_TYPE);
			conn.setRequestProperty("Msg", msgCode);
			conn.setRequestProperty("uuid", UUID.randomUUID().toString());
			conn.setRequestProperty("V", versionCode);
			
			
			conn.setConnectTimeout(GlobalInfo.CONNECTTIMEOUT_NUMBER);  
			conn.setReadTimeout(GlobalInfo.READTIMEOUT_NUMBER); 
			conn.getOutputStream().write(bodyByte);
			
			is = conn.getInputStream();
			byte[] resp = toByteArray(is);
			if(!versionCode.equals("0")) {
				resp = ClientCrypt.decrypt(resp, publicKey);
			}
			returnMsg =  new String(resp, "utf-8");
		} catch (Exception e) {
			throw new UpmException(msgCode,e);
		} finally {
			IOUtils.closeQuietly(is);
			try{
				if(null != conn) conn.disconnect();
			}catch(Exception e) {}
		}
		return returnMsg;
		
	}
	
	
	/**
	 * 
	 * @param url
	 * @param body
	 * @param msgCode
	 * @param versionCode
	 * @param publicKey
	 * @return
	 */
	public String getResponse2(String url, String body, String msgCode,String versionCode, String publicKey) {
		String returnMsg = null;
		CloseableHttpClient client = null;
		byte[] bodyByte = new byte[0];
		try {
			if (versionCode.equals("0")) {
				bodyByte = body.getBytes("UTF-8");
			} else {
				bodyByte = ClientCrypt.encrypt(body.getBytes("UTF-8"),publicKey);
			}
			client = HttpClients.createDefault();
			HttpPost httpPost = new HttpPost(url);
			httpPost.setHeader("Content-Type", GlobalInfo.CONTENT_TYPE);
			httpPost.setHeader("Msg", msgCode);
			httpPost.setHeader("uuid", UUID.randomUUID().toString());
			httpPost.setHeader("V", versionCode);
			ByteArrayEntity entity = new ByteArrayEntity(bodyByte);
			httpPost.setEntity(entity);
			RequestConfig requestConfig = RequestConfig.custom()
					.setSocketTimeout(GlobalInfo.READTIMEOUT_NUMBER)
					.setConnectTimeout(GlobalInfo.CONNECTTIMEOUT_NUMBER)
					.build();//
			httpPost.setConfig(requestConfig);

			HttpResponse response = client.execute(httpPost);

			int statusCode = response.getStatusLine().getStatusCode();
			if (statusCode == HttpStatus.SC_OK) {
				byte[] resp = toByteArray(response.getEntity().getContent());
				if (!versionCode.equals("0")) {
					resp = ClientCrypt.decrypt(resp, publicKey);
				}
				returnMsg = new String(resp, "utf-8");
			}
		} catch (Exception e) {
			throw new UpmException(msgCode, e);
		} finally {
			try {
				if (client != null)
					client.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return returnMsg;
	}
	
	public static byte[] toByteArray(InputStream input) throws IOException {
		ByteArrayOutputStream output = new ByteArrayOutputStream();
		copy(input, output);
		return output.toByteArray();
	}
		
	public static int copy(InputStream input, OutputStream output) throws IOException {
		long count = copyLarge(input, output);
		if (count > 2147483647L) {
			return -1;
		}
		return (int)count;
	}
		
	public static long copyLarge(InputStream input, OutputStream output) throws IOException {
		byte[] buffer = new byte[4096];
		long count = 0L;
		int n = 0;
		while (-1 != (n = input.read(buffer))) {
			output.write(buffer, 0, n);
			count += n;
		}
		return count;
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值