|  | @@ -0,0 +1,155 @@
 | 
	
		
			
				|  |  | +package cn.newfeifan.mall.module.pay.fuiou.util;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import java.io.IOException;
 | 
	
		
			
				|  |  | +import java.io.InputStream;
 | 
	
		
			
				|  |  | +import java.io.UnsupportedEncodingException;
 | 
	
		
			
				|  |  | +import java.nio.charset.Charset;
 | 
	
		
			
				|  |  | +import java.util.ArrayList;
 | 
	
		
			
				|  |  | +import java.util.List;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import cn.newfeifan.mall.framework.common.exception.ErrorCode;
 | 
	
		
			
				|  |  | +import lombok.Setter;
 | 
	
		
			
				|  |  | +import org.apache.commons.httpclient.HttpClient;
 | 
	
		
			
				|  |  | +import org.apache.commons.httpclient.methods.PostMethod;
 | 
	
		
			
				|  |  | +import org.apache.commons.httpclient.methods.StringRequestEntity;
 | 
	
		
			
				|  |  | +import org.apache.commons.httpclient.params.HttpMethodParams;
 | 
	
		
			
				|  |  | +import org.apache.commons.httpclient.protocol.Protocol;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * @author Administrator
 | 
	
		
			
				|  |  | + * 
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +@Setter
 | 
	
		
			
				|  |  | +public class FuiouHttpPoster {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	public FuiouHttpPoster() {
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	private String url;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	private String charset;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	public FuiouHttpPoster(String url, String charset) {
 | 
	
		
			
				|  |  | +		super();
 | 
	
		
			
				|  |  | +		this.url = url;
 | 
	
		
			
				|  |  | +		this.charset = charset;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	public FuiouHttpPoster(String url) {
 | 
	
		
			
				|  |  | +		super();
 | 
	
		
			
				|  |  | +		this.url = url;
 | 
	
		
			
				|  |  | +		this.charset = Charset.defaultCharset().name();
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	public String newPost(final String body) throws Exception {
 | 
	
		
			
				|  |  | +		return post(new PostMethodCallback() {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			@Override
 | 
	
		
			
				|  |  | +			public void doInPostMethod(PostMethod postMethod) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				try {
 | 
	
		
			
				|  |  | +					postMethod.setRequestEntity(new StringRequestEntity(body,"application/json","UTF-8"));
 | 
	
		
			
				|  |  | +				} catch (UnsupportedEncodingException e) {
 | 
	
		
			
				|  |  | +					ErrorCode err = new ErrorCode(1, e.getMessage());
 | 
	
		
			
				|  |  | +					throw exception(err);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		});
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +	 * 使用http协议发送xmltext到url
 | 
	
		
			
				|  |  | +//	 *
 | 
	
		
			
				|  |  | +//	 * @param url
 | 
	
		
			
				|  |  | +//	 *            将要发送的地址
 | 
	
		
			
				|  |  | +//	 * @param xmltext
 | 
	
		
			
				|  |  | +//	 *            将要发送的内容
 | 
	
		
			
				|  |  | +//	 * @return http返回码
 | 
	
		
			
				|  |  | +//	 * @throws LoanException
 | 
	
		
			
				|  |  | +//	 * @throws Exception
 | 
	
		
			
				|  |  | +	 */
 | 
	
		
			
				|  |  | +	private String post(PostMethodCallback callback) throws Exception {
 | 
	
		
			
				|  |  | +		PostMethod xmlpost = null;
 | 
	
		
			
				|  |  | +		HttpClient httpclient = new HttpClient();
 | 
	
		
			
				|  |  | +		try {
 | 
	
		
			
				|  |  | +			// https设置
 | 
	
		
			
				|  |  | +			if (url.indexOf("https://") != -1) {
 | 
	
		
			
				|  |  | +				// 创建SSL连接
 | 
	
		
			
				|  |  | +				@SuppressWarnings("deprecation")
 | 
	
		
			
				|  |  | +				Protocol myhttps = new Protocol("https",
 | 
	
		
			
				|  |  | +						new MySSLSocketFactory(), 443);
 | 
	
		
			
				|  |  | +				Protocol.registerProtocol("https", myhttps);
 | 
	
		
			
				|  |  | +			}	
 | 
	
		
			
				|  |  | +			httpclient.getHttpConnectionManager().getParams().setConnectionTimeout(60 * 1000);
 | 
	
		
			
				|  |  | +			httpclient.getHttpConnectionManager().getParams().setSoTimeout(60 * 1000);
 | 
	
		
			
				|  |  | +			xmlpost = new PostMethod(url);
 | 
	
		
			
				|  |  | +			httpclient.getParams().setParameter(
 | 
	
		
			
				|  |  | +					HttpMethodParams.HTTP_CONTENT_CHARSET, charset);
 | 
	
		
			
				|  |  | +			httpclient.getParams().setContentCharset(charset);
 | 
	
		
			
				|  |  | +			// xmlpost.setRequestHeader("content-type", "text/xml; charset=" +
 | 
	
		
			
				|  |  | +			// charset);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			// 内部回调,发送数据,设置参数用
 | 
	
		
			
				|  |  | +			callback.doInPostMethod(xmlpost);
 | 
	
		
			
				|  |  | +			// 执行请求
 | 
	
		
			
				|  |  | +			httpclient.executeMethod(xmlpost);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			// 获取返回信息
 | 
	
		
			
				|  |  | +			InputStream ips = xmlpost.getResponseBodyAsStream();
 | 
	
		
			
				|  |  | +			List<Byte> byteList = new ArrayList<Byte>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			int is = 0;
 | 
	
		
			
				|  |  | +			while ((is = ips.read()) != -1)
 | 
	
		
			
				|  |  | +				byteList.add((byte) is);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			byte[] allb = new byte[byteList.size()];
 | 
	
		
			
				|  |  | +			for (int j = 0; j < byteList.size(); j++)
 | 
	
		
			
				|  |  | +				allb[j] = byteList.get(j);
 | 
	
		
			
				|  |  | +			String responseString = new String(allb, charset);
 | 
	
		
			
				|  |  | +			// LogWriter.debug(this, "HTTP返回码=" + responseStatCode);
 | 
	
		
			
				|  |  | +			System.out.println("应答数据=" + responseString);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			if (url.indexOf("https://") != -1)
 | 
	
		
			
				|  |  | +				Protocol.unregisterProtocol("https");
 | 
	
		
			
				|  |  | +			return responseString;
 | 
	
		
			
				|  |  | +		} catch (IOException ex2) {
 | 
	
		
			
				|  |  | +			ErrorCode err = new ErrorCode(1, ex2.getMessage());
 | 
	
		
			
				|  |  | +//			throw exception(err);
 | 
	
		
			
				|  |  | +//			System.out.println("报文发送到[" + url + "]失败:" + ex2.getMessage());
 | 
	
		
			
				|  |  | +//			throw new Exception("报文发送异常");
 | 
	
		
			
				|  |  | +		} catch (Exception ex) {
 | 
	
		
			
				|  |  | +			ErrorCode err = new ErrorCode(1, ex.getMessage());
 | 
	
		
			
				|  |  | +			throw exception(err);
 | 
	
		
			
				|  |  | +//			System.out.println("报文发送到[" + url + "]失败:" + ex.getMessage());
 | 
	
		
			
				|  |  | +//			throw new Exception("报文发送异常");
 | 
	
		
			
				|  |  | +		} finally {
 | 
	
		
			
				|  |  | +			try {
 | 
	
		
			
				|  |  | +				if(xmlpost != null)
 | 
	
		
			
				|  |  | +					xmlpost.releaseConnection();
 | 
	
		
			
				|  |  | +				if(httpclient != null)
 | 
	
		
			
				|  |  | +					httpclient.getHttpConnectionManager().closeIdleConnections(0);
 | 
	
		
			
				|  |  | +			} catch (Exception e) {
 | 
	
		
			
				|  |  | +				ErrorCode err = new ErrorCode(1, e.getMessage());
 | 
	
		
			
				|  |  | +				throw exception(err);
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		return null;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +	 * PostMethod回调处理
 | 
	
		
			
				|  |  | +	 * 
 | 
	
		
			
				|  |  | +	 */
 | 
	
		
			
				|  |  | +	public interface PostMethodCallback {
 | 
	
		
			
				|  |  | +		public void doInPostMethod(PostMethod postMethod);
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 |