|
@@ -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);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|