zoukankan      html  css  js  c++  java
  • 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();
    }
    }
  • 相关阅读:
    JID 2.0 RC4 发布,高性能的 Java 序列化库
    FBReaderJ 1.6.3 发布,Android 电子书阅读器
    Arquillian 1.0.3.Final 发布,单元测试框架
    JavaScript 的宏扩展 Sweet.js
    Hypertable 0.9.6.5 发布,分布式数据库
    JRuby 1.7.0 发布,默认使用 Ruby 1.9 模式
    httppp 1.4.0 发布,HTTP响应时间监控
    Redis 2.6.0 正式版发布,高性能K/V服务器
    OfficeFloor 2.5.0 发布,IoC 框架
    XWiki 4.3 首个里程碑发布
  • 原文地址:https://www.cnblogs.com/cosyer/p/6295746.html
Copyright © 2011-2022 走看看