• HttpClientHelper


     
    public static String invoke(String jsondata, String url, String appsecret, String account, String version) throws Exception {
            byte[] dataAssembleByte = RSAUtils.encryptByPublicKey(jsondata.getBytes("UTF-8"), appsecret);
            String jsonDataBase64 = Base64.encodeBase64String(dataAssembleByte);
            
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("method", METHOD);
            map.put("version", version);
            map.put("data", jsonDataBase64);
            map.put("account", account);
            map.put("timestamp", DateUtils.convertToString(new Date(), DateUtils.ISO_DATETIME_NO_T_FORMAT));
            
            if (logger.isDebugEnabled()){
                logger.debug("url=[" + url + "], " +
                                "method=[" + map.get("method") + "], " +
                                "version=[" + map.get("version") + "], " +
                                "jsondata=[" + jsondata + "], " +
                                "jsonDataBase64=["+ map.get("data") + "], " +
                                "timestamp=["+ map.get("timestamp") + "], " + 
                                "account=[" + map.get("account") + "]");
            }
            long startTime = System.currentTimeMillis();
            String result = HttpClientHelper.post(url, map);
            long endTime = System.currentTimeMillis();
            logger.info("调用OMS(新)系统接口耗时:" + (endTime - startTime) + "毫秒");
            return result;
        }
    package com.yundaex.common.bidiboxing.helper;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.config.RequestConfig;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClientBuilder;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.util.EntityUtils;
    
    
    public class HttpClientHelper {
        
        public static final String CHARSET_ENCODE = "UTF-8";
        
        public static String post(String url, String data) throws Exception {
            RequestConfig config = RequestConfig.custom().setConnectTimeout(60000).setSocketTimeout(30000).build();
            CloseableHttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
    
            HttpPost hp = new HttpPost(url);
            HttpEntity responseEntity = null;
            CloseableHttpResponse response = null;
            int status = 0;
            try {
                StringEntity entity = new StringEntity(data, CHARSET_ENCODE);// 解决中文乱码问题
                entity.setContentEncoding("UTF-8");
                entity.setContentType("application/json");
                hp.setEntity(entity);
    
                response = httpClient.execute(hp);
    
                status = (response == null ) ? 0 :response.getStatusLine().getStatusCode();
                if (status == 200) {
                    responseEntity = response.getEntity();
                    String responseString = EntityUtils.toString(responseEntity, CHARSET_ENCODE);
                    return responseString;
                } else {
                    hp.abort();
                    throw new YDInterfaceAccessException("响应编码为:" + status);
                }
    
            } finally {
                if (null != responseEntity) {
                    EntityUtils.consumeQuietly(responseEntity);
                }
                if (null != response) {
                    try {
                        response.close();
                    } catch (IOException e) {
                    }
                }
                try {
                    httpClient.close();
                } catch (IOException e) {
                }
            }
        }
        
        public String post(String url, Map<String, Object> data) throws Exception{
            RequestConfig config = RequestConfig.custom().setConnectTimeout(60000).setSocketTimeout(30000).build();
            CloseableHttpClient   httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
            
            HttpPost hp = new HttpPost(url);
            HttpEntity responseEntity = null;
            CloseableHttpResponse response = null;
            int status = 0;
            
            List<NameValuePair> pairs = new ArrayList<NameValuePair>();
            for (Map.Entry<String, Object> entry : data.entrySet()) {
                Object value = entry.getValue();
                if(value != null){
                    pairs.add(new BasicNameValuePair(entry.getKey(), value.toString()));
                }
            }
            
            try {
                UrlEncodedFormEntity uefEntity = new UrlEncodedFormEntity(pairs, CHARSET_ENCODE);
                hp.setEntity(uefEntity);
    
                response = httpClient.execute(hp);
                
                status = (response == null ) ? 0 :response.getStatusLine().getStatusCode();
                if (status == 200) {
                    responseEntity = response.getEntity();
                    String responseString = EntityUtils.toString(responseEntity, CHARSET_ENCODE);
                    return responseString;
                } else {
                    hp.abort();
                    throw new YDInterfaceAccessException("响应编码为:" + status);
                }
    
            } finally {
                if (null != responseEntity) {
                    EntityUtils.consumeQuietly(responseEntity);
                }
                if (null != response) {
                    try {
                        response.close();
                    } catch (IOException e) {
                    }
                }
                try {
                    httpClient.close();
                } catch (IOException e) {
                }
            }
        }
    }
    public class HttpClientHelperTest {
    public static void main(String[] args) {
        String url = "http://10.19.105.184:7001/wms/systemConfig/query.do";
        String data  = 
               "{"+
     " "data":{ "+
     "   "criterias":{ "+
     "  "sysKey":"IFM_SWITCH" "+
     "   } "+
     " }, "+
     " "username":"wms_test", "+
     " "format":"json", "+
     " "dateTime":"2021426925", "+
     " "validation":"bfbb29498ae850d16d4bea5eb3469048" "+
     " }" 
                ;
        String responseString ="";
        try {
            responseString = HttpClientHelper.post(url, data);
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(responseString);
    }
    }
  • 相关阅读:
    jmeter接口自动化难点系列-jmeter多个线程组接口请求顺序问题
    Oracle 绝对和相对文件编号研究
    Oracle-索引分裂研究
    局域网内git项目克隆
    在CentOS中修改mariadb数据库存储位置
    Mariadb 通过binlog恢复删除(drop table)的数据
    高效边缘流处理方案:使用 OpenYurt 部署和管理 eKuiper
    负载均衡
    电信运营商基于 MQTT 协议 构建千万级 IoT 设备管理平台
    使用 MQTT.fx 接入 EMQ X Cloud
  • 原文地址:https://www.cnblogs.com/tonggc1668/p/7472457.html
Copyright © 2020-2023  润新知