• java Http post请求发送json字符串


    最近差点被业务逻辑搞懵逼,果然要先花时间思考,确定好流程再执行。目前最好用的jar包还是org.apache.http。

    public class HttpClientHelper {
    
        private RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(15000).setConnectTimeout(15000)
                .setConnectionRequestTimeout(15000).build();
    
        private static HttpClientHelper instance = null;
    
        public HttpClientHelper() {
        }
    
        public static HttpClientHelper getInstance() {
            if (instance == null) {
                instance = new HttpClientHelper();
            }
            return instance;
        }
    
        /**
         * 发送 post请求
         *
         * @param httpUrl
         *            地址
         */
        public String sendHttpPost(String httpUrl) {
            HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost
            return sendHttpPost(httpPost);
        }
    
        /**
         * 发送 post请求
         *
         * @param httpUrl
         *            地址
         * @param params
         *            参数(格式:key1=value1&key2=value2)
         */
        public String sendHttpPost(String httpUrl, String params) {
            HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost
            try {
                // 设置参数
                StringEntity stringEntity = new StringEntity(params, "UTF-8");
                stringEntity.setContentType("application/x-www-form-urlencoded");
                httpPost.setEntity(stringEntity);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return sendHttpPost(httpPost);
        }
    
        /**
         * 发送 post请求
         *
         * @param httpUrl
         *            地址
         * @param maps
         *            参数
         */
        public String sendHttpPost(String httpUrl, Map<String, String> maps) {
            HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost
            // 创建参数队列
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            for (String key : maps.keySet()) {
                nameValuePairs.add(new BasicNameValuePair(key, maps.get(key)));
            }
            try {
                httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
            } catch (Exception e) {
                e.printStackTrace();
            }
            return sendHttpPost(httpPost);
        }
    
        /**
         * 发送 post请求(带文件)
         *
         * @param httpUrl
         *            地址
         * @param maps
         *            参数
         * @param fileLists
         *            附件
         */
        public String sendHttpPost(String httpUrl, Map<String, String> maps, List<File> fileLists) {
            HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost
            MultipartEntityBuilder meBuilder = MultipartEntityBuilder.create();
            if (maps != null) {
                for (String key : maps.keySet()) {
                    meBuilder.addPart(key, new StringBody(maps.get(key), ContentType.TEXT_PLAIN));
                }
            }
            if (fileLists != null) {
                for (File file : fileLists) {
                    FileBody fileBody = new FileBody(file);
                    meBuilder.addPart("files", fileBody);
                }
            }
            HttpEntity reqEntity = meBuilder.build();
            httpPost.setEntity(reqEntity);
            return sendHttpPost(httpPost);
        }
    
        /**
         * 发送Post请求
         *
         * @param httpPost
         * @return
         */
        private String sendHttpPost(HttpPost httpPost) {
            CloseableHttpClient httpClient = null;
            CloseableHttpResponse response = null;
            HttpEntity entity = null;
            String responseContent = null;
            try {
                // 创建默认的httpClient实例.
                httpClient = HttpClients.createDefault();
                httpPost.setConfig(requestConfig);
                // 执行请求
                response = httpClient.execute(httpPost);
                entity = response.getEntity();
                responseContent = EntityUtils.toString(entity, "UTF-8");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    // 关闭连接,释放资源
                    if (response != null) {
                        response.close();
                    }
                    if (httpClient != null) {
                        httpClient.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return responseContent;
        }
    
        public String sendJsonHttpPost(String url, String json) {
    
            CloseableHttpClient httpclient = HttpClients.createDefault();
            String responseInfo = null;
            try {
                HttpPost httpPost = new HttpPost(url);
                httpPost.addHeader("Content-Type", "application/json;charset=UTF-8");
                ContentType contentType = ContentType.create("application/json", CharsetUtils.get("UTF-8"));
                httpPost.setEntity(new StringEntity(json, contentType));
                CloseableHttpResponse response = httpclient.execute(httpPost);
                HttpEntity entity = response.getEntity();
                int status = response.getStatusLine().getStatusCode();
                if (status >= 200 && status < 300) {
                    if (null != entity) {
                        responseInfo = EntityUtils.toString(entity);
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    httpclient.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return responseInfo;
        }
    
        /**
         * 发送 get请求
         *
         * @param httpUrl
         */
        public String sendHttpGet(String httpUrl) {
            HttpGet httpGet = new HttpGet(httpUrl);// 创建get请求
            return sendHttpGet(httpGet);
        }
    
        /**
         * 发送 get请求Https
         *
         * @param httpUrl
         */
        public String sendHttpsGet(String httpUrl) {
            HttpGet httpGet = new HttpGet(httpUrl);// 创建get请求
            return sendHttpsGet(httpGet);
        }
    
        /**
         * 发送Get请求
         *
         * @param httpGet
         * @return
         */
        private String sendHttpGet(HttpGet httpGet) {
            CloseableHttpClient httpClient = null;
            CloseableHttpResponse response = null;
            HttpEntity entity = null;
            String responseContent = null;
            try {
                // 创建默认的httpClient实例.
                httpClient = HttpClients.createDefault();
                httpGet.setConfig(requestConfig);
                // 执行请求
                response = httpClient.execute(httpGet);
                entity = response.getEntity();
                responseContent = EntityUtils.toString(entity, "UTF-8");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    // 关闭连接,释放资源
                    if (response != null) {
                        response.close();
                    }
                    if (httpClient != null) {
                        httpClient.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return responseContent;
        }
    
        /**
         * 发送Get请求Https
         *
         * @param httpGet
         * @return
         */
        private String sendHttpsGet(HttpGet httpGet) {
            CloseableHttpClient httpClient = null;
            CloseableHttpResponse response = null;
            HttpEntity entity = null;
            String responseContent = null;
            try {
                // 创建默认的httpClient实例.
                PublicSuffixMatcher publicSuffixMatcher = PublicSuffixMatcherLoader
                        .load(new URL(httpGet.getURI().toString()));
                DefaultHostnameVerifier hostnameVerifier = new DefaultHostnameVerifier(publicSuffixMatcher);
                httpClient = HttpClients.custom().setSSLHostnameVerifier(hostnameVerifier).build();
                httpGet.setConfig(requestConfig);
                // 执行请求
                response = httpClient.execute(httpGet);
                entity = response.getEntity();
                responseContent = EntityUtils.toString(entity, "UTF-8");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    // 关闭连接,释放资源
                    if (response != null) {
                        response.close();
                    }
                    if (httpClient != null) {
                        httpClient.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return responseContent;
        }
    
        public static void main(String[] args) {
            HttpClientHelper h = new HttpClientHelper();
            Map map = new HashMap();
            map.put("messageid", "test00201612210002");
            map.put("clientid", "test00");
            map.put("index_id", "买方会员");
            map.put("threshold", 0.9);
            List<String> data = new ArrayList<String>();
            data.add("wo xiang cha xun jin tian de yao pin jia ge lie biao");
            map.put("data", data);
            
            String json = JSON.toJSONString(map);
            
    
            String reply = h.sendJsonHttpPost("http://11.11.40.63:7777/algor/simclassify", json);
            System.out.println("reply->"+reply);
        }
    }

     java里遍历动态key:

    LinkedHashMap<String, String> jsonMap = JSON.parseObject(jsonStr,new TypeReference<LinkedHashMap<String, String>>() {});
    for (Map.Entry<String, String> entry : jsonMap.entrySet()) {
    if (Float.valueOf(entry2.getValue()) > tempValue) {
    key = entry.getKey());
    value= entry.getValue();
    }
    }
  • 相关阅读:
    [NOI2009]管道取珠 DP + 递推
    poj3207 Ikki's Story IV
    NOIP2016Day1T2天天爱跑步(LCA+桶)
    NOIP2016Day2T3愤怒的小鸟(状压dp) O(2^n*n^2)再优化
    NOIP2016Day1T3换教室(floyd+期望dp)
    bzoj1854: [Scoi2010]游戏(匈牙利) / GDKOI Day2 T2(最大流)
    [CodeVs4927]线段树练习5
    基数排序的奇技淫巧
    bzoj2724: [Violet 6]蒲公英(离散化+分块)
    bzoj1483: [HNOI2009]梦幻布丁(链表+启发式合并)
  • 原文地址:https://www.cnblogs.com/cosyer/p/6295746.html
Copyright © 2020-2023  润新知