加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java http请求工具整理

发布时间:2020-12-15 07:26:52 所属栏目:Java 来源:网络整理
导读:? 处理了http 的get和post的请求,分别支持同步处理,异步处理两种方式下见代码。 @Slf4jpublic class HttpUtils { /** * 同步请求http请求 不推荐 * * @param url * @return */ public static byte[] httpGetSync(String url) { HttpGet httpGet = new Http

?

  处理了http 的get和post的请求,分别支持同步处理,异步处理两种方式下见代码。

@Slf4jpublic class HttpUtils {    /**     * 同步请求http请求 不推荐     *     * @param url     * @return     */    public static byte[] httpGetSync(String url) {        HttpGet httpGet = new HttpGet(url);        try (CloseableHttpClient httpclient = HttpClients.createDefault()) {            CloseableHttpResponse response = httpclient.execute(httpGet);            if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()) {                HttpEntity entity = response.getEntity();                return Utils.inputStream2Bytes(entity.getContent());            } else {                log.error("NetUrls httpGetSync {} url {} ",response.getStatusLine().getStatusCode(),url);            }        } catch (IOException exception) {            log.error("reInitExchangeConfig request exception {}",exception);        }        return null;    }    /**     * 指定执行器的http请求 推荐     *     * @param url     * @param exec     * @param callback     */    public static void httpGet(String url,Executor exec,NetResponse callback) {        getHttpExec().execute(() -> {            byte[] bytes = httpGetSync(url);            exec.execute(() -> {                callback.response(bytes);            });        });    }    /**     * httpPost 请求异步推荐     *     * @param url     * @param data     * @param contentType     * @return     */    public static byte[] httpPostSync(String url,String data,ContentType contentType) {        CloseableHttpClient httpClient = HttpClients.createDefault();        HttpPost httpPost = new HttpPost(url);        httpPost.setEntity(new StringEntity(data,contentType));        try (CloseableHttpResponse response = httpClient.execute(httpPost)) {            if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()) {                HttpEntity entity = response.getEntity();                return Utils.inputStream2Bytes(entity.getContent());            } else {                log.warn("HTTP POST Failure {},{},{}",url,data,response.getStatusLine().getStatusCode());            }        } catch (IOException exception) {            log.warn("HTTP POST Exception",exception);        }        return null;    }    /**     * httpPost 请求异步推荐     *     * @param url     * @param data     * @param contentType     * @param exec     * @param callback     */    public static void httpPost(String url,ContentType contentType,NetResponse callback) {        getHttpExec().execute(() -> {            byte[] bytes = httpPostSync(url,contentType);            exec.execute(() -> {                callback.response(bytes);            });        });    }    /**     * 不指定执行器的http请求 不推荐     *     * @param url     * @param callback     */    public static void httpGetAsync(String url,NetResponse callback) {        getHttpExec().execute(() -> {            byte[] bytes = httpGetSync(url);            callback.response(bytes);        });    }    /**     * 不指定执行器的http请求 不推荐     *     * @param url     * @param callback     */    public static void httpGetAsync(String url,contentType);            callback.response(bytes);        });    }    private static ExecutorService httpExec;    private static ExecutorService getHttpExec() {        if (httpExec == null) {            synchronized (HttpUtils.class) {                if (httpExec == null) {                    httpExec = Executors.newCachedThreadPool();                }            }        }        return httpExec;    }    public interface NetResponse {        void response(byte[] response);    }}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读