123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 |
- package com.minpay.common.util;
- import java.io.BufferedReader;
- import java.io.DataOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.io.OutputStreamWriter;
- import java.io.PrintWriter;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.net.URLConnection;
- import java.net.URLEncoder;
- import java.security.KeyStore;
- import java.util.Map;
- import javax.net.ssl.SSLContext;
- import org.apache.http.HttpEntity;
- import org.apache.http.HttpResponse;
- import org.apache.http.client.config.RequestConfig;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
- import org.apache.http.conn.ssl.SSLContexts;
- 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 net.sf.json.JSONObject;
- /**
- * 发送请求
- * @author Zhumq
- *
- */
- public class HttpPostUtil {
- /**
- * 发送get请求
- * @param url
- * @param param "a=111&b=123"
- * @return
- */
- public static String sendGet(String url,String param){
- String result = "";
- try{
- String urlName = url + "?"+param;//
- URL U = new URL(urlName);
- URLConnection connection = U.openConnection();
- connection.connect();
-
- BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
- String line;
- while ((line = in.readLine())!= null){
- result += line;
- }
- in.close();
- }catch(Exception e){
- System.out.println("error!!"+e);
- }
- return result;
- }
- /**
- * 发送post请求
- * @param url
- * @param param "a=111&b=123"
- * @return
- */
- public static String sendPost(String url, String param){
- String result = "";
- try{
- URL httpurl = new URL(url);
- HttpURLConnection httpConn = (HttpURLConnection)httpurl.openConnection();
- httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
- httpConn.setDoOutput(true);
- httpConn.setDoInput(true);
- PrintWriter out = new PrintWriter(httpConn.getOutputStream());
- out.print(param);
- out.flush();
- out.close();
- BufferedReader in = new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8"));
- String line;
- while ((line = in.readLine())!= null){
- result += line;
- }
- in.close();
- }catch(Exception e){
- System.out.println("error!!"+e);
- }
-
- System.out.println("result:"+result);
- return result;
- }
-
-
- public static String sendPostRequest(String url, Map param, String user, String pass){
- String result = "";
- try{
- URL httpurl = new URL(url);
- HttpURLConnection httpConn = (HttpURLConnection)httpurl.openConnection();
- httpConn.setRequestProperty("Authorization", "Basic " + Base64.encode((user+":"+pass).getBytes()));
- httpConn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
- httpConn.setDoOutput(true);
- httpConn.setDoInput(true);
- PrintWriter out = new PrintWriter(httpConn.getOutputStream());
- out.print(com.alibaba.fastjson.JSONObject.toJSONString(param));
- out.flush();
- out.close();
- BufferedReader in = new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8"));
- String line;
- while ((line = in.readLine())!= null){
- result += line;
- }
- in.close();
- }catch(Exception e){
- System.out.println("error!!"+e);
- }
-
- System.out.println("result:"+result);
- return result;
- }
-
- /**
- * 发送post请求(推货专用)
- * @param url
- * @param param "a=111&b=123"
- * @return
- */
- public static String sendPostFormachine(String url, String param){
- String result = "";
- try{
- param = URLEncoder.encode(param, "utf-8");
- URL httpurl = new URL(url);
- HttpURLConnection httpConn = (HttpURLConnection)httpurl.openConnection();
- httpConn.setDoOutput(true);
- httpConn.setDoInput(true);
- // 设置传递方式
- httpConn.setRequestMethod("POST");
- // 设置维持长连接
- httpConn.setRequestProperty("Connection", "Keep-Alive");
- // 设置文件字符集:
- httpConn.setRequestProperty("Charset", "UTF-8");
- // 转换为字节数组
- //byte[] data = ("formData=" + param.toString()).getBytes();
- byte[] data = (param.toString()).getBytes();
- // 设置文件长度
- httpConn.setRequestProperty("Content-Length", CommonUtil.objToString(data.length));
- // 设置文件类型:
- httpConn.setRequestProperty("contentType", "application/json");
- // PrintWriter out = new PrintWriter(httpConn.getOutputStream());
- // out.print(param.getBytes());
- // out.flush();
- // out.close();
- OutputStream out = new DataOutputStream(httpConn.getOutputStream()) ;
- // 写入请求的字符串
- out.write((param.toString()).getBytes());
- out.flush();
- out.close();
- BufferedReader in = new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8"));
- String line;
- while ((line = in.readLine())!= null){
- result += line;
- }
- in.close();
- }catch(Exception e){
- System.out.println("error!!"+e);
- }
-
- System.out.println("result:"+result);
- return result;
- }
-
-
-
-
-
-
- private final static int CONNECT_TIMEOUT = 5000; // in milliseconds
- private final static String DEFAULT_ENCODING = "UTF-8";
- private static int socketTimeout = 10000;// 连接超时时间,默謿10祿
- private static int connectTimeout = 30000;// 传输超时时间,默謿30祿
-
- private static RequestConfig requestConfig;// 请求器的配置
- private static CloseableHttpClient httpClient;// HTTP请求嗿
-
- public static String postData(String urlStr, String data){
- return postData(urlStr, data, null);
- }
- public static String postData(String urlStr, String data, String contentType){
- BufferedReader reader = null;
- try {
- URL url = new URL(urlStr);
- URLConnection conn = url.openConnection();
- conn.setDoOutput(true);
- conn.setConnectTimeout(CONNECT_TIMEOUT);
- conn.setReadTimeout(CONNECT_TIMEOUT);
- if(contentType != null)
- conn.setRequestProperty("content-type", contentType);
- OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream(), DEFAULT_ENCODING);
- if(data == null)
- data = "";
- writer.write(data);
- writer.flush();
- writer.close();
- reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), DEFAULT_ENCODING));
- StringBuilder sb = new StringBuilder();
- String line = null;
- while ((line = reader.readLine()) != null) {
- sb.append(line);
- sb.append("\r\n");
- }
- return sb.toString();
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- if (reader != null)
- reader.close();
- } catch (IOException e) {
- }
- }
- return null;
- }
-
- /**
- * 通过Https弿API post xml数据
- *
- * @param url API地址
- * @param xmlObj 要提交的XML数据对象
- * @param mchId 商户ID
- * @param certPath 证书位置
- * @return
- */
- public static String postData(String url, String xmlObj, String mchId, String certPath) {
- // 加载证书
- try {
- initCert(mchId, certPath);
- } catch (Exception e) {
- e.printStackTrace();
- }
- String result = null;
- HttpPost httpPost = new HttpPost(url);
- // 得指明使用UTF-8编码,否则到API服务器XML的中文不能被成功识别
- StringEntity postEntity = new StringEntity(xmlObj, "UTF-8");
- httpPost.addHeader("Content-Type", "text/xml");
- httpPost.setEntity(postEntity);
- // 根据默认超时限制初始化requestConfig
- requestConfig = RequestConfig.custom().setSocketTimeout(socketTimeout).setConnectTimeout(connectTimeout).build();
- // 设置请求器的配置
- httpPost.setConfig(requestConfig);
- try {
- HttpResponse response = null;
- try {
- response = httpClient.execute(httpPost);
- } catch (IOException e) {
- e.printStackTrace();
- }
- HttpEntity entity = response.getEntity();
- try {
- result = EntityUtils.toString(entity, "UTF-8");
- } catch (IOException e) {
- e.printStackTrace();
- }
- } finally {
- httpPost.abort();
- }
- return result;
- }
-
- /**
- * 加载证书
- *
- * @param mchId 商户ID
- * @param certPath 证书位置
- * @throws Exception
- */
- private static void initCert(String mchId, String certPath) throws Exception {
- // 证书密码,默认为商户ID
- String key = mchId;
- // 证书的路弿
- String path = certPath;
- // 指定读取证书格式为PKCS12
- KeyStore keyStore = KeyStore.getInstance("PKCS12");
- // 读取本机存放的PKCS12证书文件
- FileInputStream instream = new FileInputStream(new File(path));
- try {
- // 指定PKCS12的密瞿(商户ID)
- keyStore.load(instream, key.toCharArray());
- } finally {
- instream.close();
- }
- SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, key.toCharArray()).build();
- SSLConnectionSocketFactory sslsf =
- new SSLConnectionSocketFactory(sslcontext, new String[] {"TLSv1"}, null,
- SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
- httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
- }
-
-
- }
|