java http请求插件_java 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, String data, ContentType contentType, Executor exec, NetResponse callback) { getHttpExec().execute(() -> { byte[] bytes = httpPostSync(url, data, 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, String data, ContentType contentType, NetResponse callback) { getHttpExec().execute(() -> { byte[] bytes = httpPostSync(url, data, 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); }}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql存储过程语法及实例

2019独角兽企业重金招聘Python工程师标准>>> 存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。 --------------------基本语法-------------------- 一.创建存储过程 create procedure sp_name() begin ......…

JAVA 重写重载/多态/抽象类/封装/接口/包

重写&重载 重写(override)是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! 重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。 …

手写一个简单的WinForm程序(2)

经过高人指教之后的代码: using System; using System.Windows.Forms; using System.Drawing; namespace MyApplication { public partial class Form1 : Form { private delegate void ShowText(); TextBox textBox1 new TextBox(); …

mysql部署jar_mysql+jar踩坑记录

一、关于mysqlmysql 5用的驱动是com.mysql.jdbc.Drivermysql 6用的驱动是com.mysql.cj.jdbc.Drivermysql连接url中useUnicodetrue&characterEncodingutf8&serverTimezoneAsia/Shanghai作用useUnicodetrue&characterEncodingutf8—用来指定编码格式为utf8serverTime…

ajax和Java session监听

Session监听嘛,没什么好解释的,java提供了很灵活的事件机制来监听session,可以监听session的创建和销毁,监控session 所携带数据的创建、变化和销毁,可以监听session的锐化和钝化(了解对象序列化的兄弟应该…

计算机历年考研复试上机基础题(一)

abc 题目描述 设a、b、c均是0到9之间的数字,abc、bcc是两个三位数,且有:abcbcc532。求满足条件的所有a、b、c的值。输入描述: 题目没有任何输入。 输出描述: 请输出所有满足题目条件的a、b、c的值。 a、b、c之间用空格隔开。 每个输出占一行。…

CSS选择器的权重与优先规则

2019独角兽企业重金招聘Python工程师标准>>> 我们在使用CSS对网页元素定义样式时经常会遇到这种情况:要对一般元素应用一般样式,然后在更特殊的元素上覆盖它们。那么我们怎么样来保证我们所新定义的元素样式能覆盖目标元素上原有的样式呢&…

《代码之美》第六章:菜鸟的自圆其说

Micheal Feather是我早就攻击过的专家级菜鸟,看过这一章,他在我心目中的高级初学者的形象,已经板上钉钉了。前两天看一本书,讲到调研表明,很多人在自己的领域干了20年,过了前五年,基本就不会再获…

java返回两个string_java – 为什么String.intern()方法返回两个不同的结果?

我有这样的代码:public static void main(String[] args) {String str1 new StringBuilder("计算机").append("软件").toString();System.out.println(str1.intern()str1);String str2 new StringBuilder("ja").append("va&qu…

列表和range、元组

1、listt.append()默认追加在后面 2、list.insert(索引,“元素”)按索引添加 3、list.extend()可添加多个字或字母的字符串,也可以是列表 4、list.pop()默认删…

gridview添加header

gridview是不能添加header的,这里的解决方法是将listview改造成gridview使用,功能很好用,唯一的缺点是列数不能自适应 示例代码下载地址http://pan.baidu.com/s/1bnmyVZT 该项目是在国外博客看到的,连接 http://www.plattysoft.co…

RedHat下JDK1.6安装-利用alternative实现多版本并存(Ubuntu同理)

虽然本文讲的是RH下面的配置,不过Ubuntu里也是一样的! RedHat es下安装过程很简单,Sun下载JDK1.6包,解压,然后rpm安装 安装完后,在etc/profile.d/下建立java.sh,代码如下 JAVA_HOME/usr/java/jd…

java如何添加同名的xml节点_jaxb怎么解析多个同名元素

说明: xml是调用外部系统返回的, 收费服务, 格式无法更改XML格式....................................java 大概格式XmlRootElement(name "INFO")public class OrderResponse {private Status status;private List orderList;pub…

web.xml

1、web.xml学名叫部署描述符文件,是在Servlet规范中定义的,是web应用的配置文件。 2、部署描述符文件就像所有XML文件一样,必须以一个XML头开始。这个头声明可以使用的XML版本并给出文件的字符编码。DOCYTPE声明必须立即出现在此头之后。这个…

Scheme N皇后

(define (range n)(define (recur n)(if ( n -1)()(cons n (recur (- n 1)))))(recur (- n 1)))(define (flatten a)(if (null? a)()(append (car a) (flatten (cdr a)))))(define (safe? x y sln)(if (null? sln)#t(let ((px (car (car sln))) (py (cadr (car sln))))(if (…

python全栈开发学习_day1_计算机五大组成部分及操作系统

一.计算机五大组成部分: 1)五大组成: 1.控制器(指挥系统,用于控制其他计算机硬件的工作) 2.运算器(用于数学运算及逻辑运算) 3.存储器(寄存器,高速缓存&#…

Asp.net如何截屏

在C#案例开发这本书中提到了一个方法 using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Drawing.Imaging; namespace zhua2 { /// <summary> /// Form1 的摘要…

php bloginfo stylesheeturl,WordPress主题制作–bloginfo函数使用教程

最近在做一款WordPress的主题&#xff0c;由于对PHP知之甚少&#xff0c;所以在制作过程中&#xff0c;还是费了很大劲儿的&#xff0c;现在就把在制作过程中遇到的一些问题逐一分享出来。开篇第一讲&#xff0c;我要分享的是bloginfo函数。这个函数主要是获取站点的相关信息&a…

201671030130+词频统计软件项目报告

&#xff08;一&#xff09;需求分析 根据实验二 软件工程个人项目的要求该软件项目的基本功能要求如下&#xff1a; 1.程序可读入任意英文文本文件&#xff0c;该文件中英文词数大于等于1个。 2.程序需要很壮健&#xff0c;能读取容纳英文原版《哈利波特》10万词以上的文章。 …

php系统维护,软件系统维护主要包含什么

软件系统维护主要包含软件系统正常使用要求与定期维护、软件系统初始化安装的维护准备。软件是用户与硬件之间的接口界面&#xff0c;用户主要是通过软件与计算机进行交流。本文操作环境&#xff1a;windows系统、thinkpad t480电脑。(学习视频分享&#xff1a;编程视频)计算机…