http post请求

import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
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 javax.imageio.ImageIO;

import net.sf.json.JSONObject;

import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Service;

import com.wasu.login.exceptions.UpmException;
import com.wasu.login.service.UpmBaseResponseManager;
import com.wasu.login.util.ClientCrypt;
import com.wasu.login.util.GlobalInfo;


public class HttpclientConnectUtil {
	
	
	/**
	 *获取返回信息
	 * @param url
	 * @param body
	 * @param msgCode
	 * @param encryptV
	 * @param publicKey
	 * @return
	 */
	@SuppressWarnings("static-access")
	public JSONObject getResponse2(String url, String body, String msgCode, String encryptV, String publicKey) {
		byte[] bodyByte = new byte[0];
		JSONObject returnMsg = new JSONObject();
		HttpURLConnection conn = null;
		InputStream is = null;
		try {
			conn = (HttpURLConnection) new URI(url).toURL().openConnection();
			if(encryptV.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", encryptV);
			
			
			conn.setConnectTimeout(GlobalInfo.CONNECTTIMEOUT_NUMBER);  
			conn.setReadTimeout(GlobalInfo.READTIMEOUT_NUMBER); 
			conn.getOutputStream().write(bodyByte);
			
			is = conn.getInputStream();
			byte[] resp = toByteArray(is);
			if(!encryptV.equals("0")) {
				resp = ClientCrypt.decrypt(resp, publicKey);
			}
			returnMsg =  returnMsg.fromObject(new String(resp, "utf-8"));
		} catch (Exception e) {
			
		} finally {
			IOUtils.closeQuietly(is);
			try{
				if(null != conn) conn.disconnect();
			}catch(Exception e) {}
		}
		return returnMsg;
		
	}
	
	
	/**
	
	 * 
	 * @param url
	 * @param body
	 * @param msgCode
	 * @param encryptV
	 * @param publicKey
	 * @return
	 */
	public JSONObject getResponse(String url, String body, String msgCode,String encryptV, String publicKey, String realIp) {
		JSONObject returnMsg = new JSONObject();
		CloseableHttpClient client = null;
		HttpPost httpPost = null;
		byte[] bodyByte = new byte[0];
		try {
			if (encryptV.equals("0")) {
				bodyByte = body.getBytes("UTF-8");
			} else {
				bodyByte = ClientCrypt.encrypt(body.getBytes("UTF-8"),publicKey);
			}
			client = HttpClients.createDefault();
			httpPost = new HttpPost(url);
			httpPost.setHeader("Content-Type", GlobalInfo.CONTENT_TYPE);
			httpPost.setHeader("Msg", msgCode);
			httpPost.setHeader("uuid", UUID.randomUUID().toString());
			httpPost.setHeader("V", encryptV);
			httpPost.setHeader("real_ip", realIp);
			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 (!encryptV.equals("0")) {
					resp = ClientCrypt.decrypt(resp, publicKey);
				}
				returnMsg = JSONObject.fromObject(new String(resp, "utf-8"));
			} else {
				returnMsg.put("code", statusCode);
				returnMsg.put("description", GlobalInfo.RUNTIME_EXCEPTION_MSG);
			}
		} catch (Exception e) {
			
		} finally {
			try {
				if (null != httpPost)
					httpPost.releaseConnection();
			} catch (Exception e) {
				
			}
			
			try {
				if (null != client)
					client.close();
			} catch (Exception e) {
				
			}
		}
		return returnMsg;
	}
	
	/**
	 * 获取支付宝登录二维码
	 * @param url
	 * @return
	 */
	public static JSONObject alipayLoginConnect(String url){
		JSONObject returnMsg = new JSONObject();
		CloseableHttpClient client = null;
		HttpPost httpPost = null;
		try {
			client = HttpClients.createDefault();
			httpPost = new HttpPost(url);
			RequestConfig requestConfig = RequestConfig.custom()
					.setSocketTimeout(GlobalInfo.READTIMEOUT_NUMBER)
					.setConnectTimeout(GlobalInfo.CONNECTTIMEOUT_NUMBER)
					.build();
			httpPost.setConfig(requestConfig);
			HttpResponse response = client.execute(httpPost);
			Header header = response.getFirstHeader("uid");
			String uid = header.getValue();
			int statusCode = response.getStatusLine().getStatusCode();
			
			if (statusCode == HttpStatus.SC_OK) {
				returnMsg.put("code", GlobalInfo.RETURN_CODE_SUCCESS);
				returnMsg.put("decription", GlobalInfo.REQUEST_NAME_ALIPAY_LOGIN_QRCODE);
				returnMsg.put("uid", uid);
				returnMsg.put("qrcode", getImageBinary(response.getEntity().getContent()));
			} else {
				returnMsg.put("coe", statusCode);
				returnMsg.put("description", GlobalInfo.RUNTIME_EXCEPTION_MSG);
				returnMsg.put("uid", "");
				returnMsg.put("qrode", "");
			}
		} catch (Exception e) {
			throw new UpmException(GlobalInfo.REQUEST_CODE_ALIPAY_LOGIN_QRCODE, e);
		} finally {
			try {
				if (null != httpPost)
					httpPost.releaseConnection();
			} catch (Exception e) {
				
			}
			
			try {
				if (null != client)
					client.close();
			} catch (Exception e) {
				
			}
		}
		return returnMsg;
	}
	
	public static byte[] toByteArray(InputStream input) throws IOException {
		ByteArrayOutputStream output = new ByteArrayOutputStream();
		copy(input, output);
		return output.toByteArray();
	}
	
	public static String getAppContextPath(){
	  String classPath = HttpclientConnectUtil.class.getResource("").getPath();
	  return classPath.substring(0,classPath.indexOf("new_login"));
	 }
	
	 public static String save(byte[] bit, String path) throws Exception {  
        BufferedOutputStream out = null;
        path = path+"/qrcode.jpg";
        if (bit.length > 0) {  
            try {  
                out = new BufferedOutputStream(new FileOutputStream(path));  
                out.write(bit);  
                out.flush();
            } finally {  
                if (out != null)  
                    out.close();  
            }  
        }  
        return path;
    }  
		
	public static int copy(InputStream input, OutputStream output) throws IOException {
		long count = copyLarge(input, output);
		if (count > 2147483647L) {
			return -1;
		}
		return (int)count;
	}
	
	static String getImageBinary(InputStream in){    
        BufferedImage bi;    
        try {    
            bi = ImageIO.read(in);    
            ByteArrayOutputStream baos = new ByteArrayOutputStream();    
            ImageIO.write(bi, "jpg", baos);    
            byte[] bytes = baos.toByteArray();    
                
            return Base64Utils.encode(bytes).trim();    
        } catch (Exception e) {    
            e.printStackTrace();    
        }    
        return null;    
    }    
	
	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;
	}
	
	
	/**
	 * post
	 * @param url
	 * @param value
	 * @return
	 */
	public static JSONObject getJsonPost(String url, String value){
		CloseableHttpClient client = null;
		JSONObject jb = new JSONObject();
		try {
			client = HttpClients.createDefault();
			HttpPost httpPost = new HttpPost(url);
			
			StringEntity se = new StringEntity(value);
			
			httpPost.setEntity(se);
			
			RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(10000).setConnectTimeout(10000).build();//设置请求和传输超时时间
			httpPost.setConfig(requestConfig);
			
			HttpResponse response = client.execute(httpPost);
			HttpEntity entity = response.getEntity();
			if (entity != null) {
				jb = JSONObject.fromObject(EntityUtils.toString(entity, "UTF-8"));
            }
		} catch (Exception e) {
		} finally{
			try {
				client.close();
			} catch (IOException e) {
			} 
		}
		return jb;
	}
	
	/**
	 * 解析返回json
	 * @param url
	 * @return
	 */
	public static JSONObject getJsonGet(String url){
		CloseableHttpClient client = null;
		JSONObject jb = null;
		try {
	        client = HttpClients.createDefault();
			HttpGet httpget = new HttpGet(url);
		        
			RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(10000).setConnectTimeout(10000).build();//设置请求和传输超时时间
			httpget.setConfig(requestConfig);
			
			HttpResponse response = client.execute(httpget);
			HttpEntity entity = response.getEntity();
			if (entity != null) {
				jb = JSONObject.fromObject(EntityUtils.toString(entity, "UTF-8"));
            }
		} catch (Exception e) {
		} finally{
			try {
				client.close();
			} catch (IOException e) {
			} 
		}
		
		return jb;
	}
	
	/**
	 * 解析返回String
	 * @param url
	 * @return
	 */
	public  String getStringGet(String url){
		CloseableHttpClient client = null;
		String returnUrl = null;
		try {
			client = HttpClients.createDefault();
			HttpGet httpget = new HttpGet(url);
			
			RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(10000).setConnectTimeout(10000).build();//设置请求和传输超时时间
			httpget.setConfig(requestConfig);
			
			HttpResponse response = client.execute(httpget);
			HttpEntity entity = response.getEntity();
			if (entity != null) {
				returnUrl = EntityUtils.toString(entity, "UTF-8");
			}
		} catch (Exception e) {
			logger.error("接口调用失败:"+e);
		} finally{
			try {
				client.close();
			} catch (IOException e) {
			} 
		}
		
		return returnUrl;
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值