技术标签: java httputils
package iih.custom.common.util;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.HttpRequestRetryHandler;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.routing.HttpRoute;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
import iih.custom.common.log.CustomBizLogger;
/**
* httpclient 工具类
* @author tian.hq 2019.05.31
*
*/
public class HttpUtils {
private static final int timeOut = 100 * 1000;
/**
* 创建httpClient 对象
* @param ip
* @param port
* @return
*/
public static HttpClient getHttpClient(String ip,Integer port) {
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(getDefaultRegistry());
// 将最大连接数增加
cm.setMaxTotal(200);
cm.setDefaultMaxPerRoute(200);
HttpHost httpHost = new HttpHost(ip, port);
// 将目标主机的最大连接数增加
cm.setMaxPerRoute(new HttpRoute(httpHost), 200);
HttpClient httpClient = HttpClients.custom().setConnectionManager(cm)
// 设置重试次数
.setRetryHandler(new HttpRequestRetryHandler() {
@Override
public boolean retryRequest(IOException exception, int executionCount, HttpContext context) {
if (executionCount > 3) {
CustomBizLogger.info("Maximum tries reached for client http pool");
return false;
}
// 服务器端没有返回的情况,一般是连接池里面的连接失效,需要重试
if (exception instanceof org.apache.http.NoHttpResponseException) {
CustomBizLogger.info("No response from server on " + executionCount + " call");
return true;
}
if (exception instanceof java.net.SocketException) {
// 客户端主动关闭连接的情况,一般是连接池里面的连接失效,需要重试
if (exception.getMessage().indexOf("Connection reset") >= 0) {
CustomBizLogger.info("java.net.SocketException Connection reset " + executionCount + " call");
return true;
}
}
if (exception instanceof java.net.SocketTimeoutException) {
// 连接或者响应超时,需要重试
CustomBizLogger.info("java.net.SocketTimeoutException: Read timed out " + executionCount + " call");
return true;
}
return false;
}
})
.build();
return httpClient;
}
private static Registry getDefaultRegistry() {
return RegistryBuilder.create()
.register("http", PlainConnectionSocketFactory.getSocketFactory())
.register("https", SSLConnectionSocketFactory.getSocketFactory())
.build();
}
/**
* httpClient 发送post请求
* @param client
* @param url
* @param params
* @return 返回
* @throws Exception
*/
public static String sendPost(HttpClient client,String url,Map params) throws Exception {
HttpPost httppost = new HttpPost(url);
config(httppost);
setPostParams(httppost, params);
HttpResponse response = null;
try {
response = client.execute(httppost);
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity, "utf-8");
EntityUtils.consume(entity);
return result;
} catch (Exception e) {
CustomBizLogger.error("httpClient 发送post请求异常",e);
throw e;
}
}
public static String sendPost(HttpClient client,String url,String data) throws Exception {
HttpPost httppost = new HttpPost(url);
config(httppost);
StringEntity stringEntity = new StringEntity(data,Charset.forName("UTF-8"));
httppost.setEntity(stringEntity);
HttpResponse response = null;
try {
response = client.execute(httppost);
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity, "UTF-8");
EntityUtils.consume(entity);
return result;
} catch (Exception e) {
CustomBizLogger.error("httpClient 发送post请求异常",e);
throw e;
}
}
/***
* 发送post 请求 ,附带header信息
* @param client
* @param url
* @param data
* @param headers
* @return
* @throws Exception
*/
public static String sendPost(HttpClient client,String url,String data,Map headers) throws Exception {
HttpPost httppost = new HttpPost(url);
config(httppost);
fillHttpPostHeader(httppost,headers);
StringEntity stringEntity = new StringEntity(data,Charset.forName("UTF-8"));
httppost.setEntity(stringEntity);
HttpResponse response = null;
try {
response = client.execute(httppost);
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity, "UTF-8");
EntityUtils.consume(entity);
return result;
} catch (Exception e) {
CustomBizLogger.error("httpClient 发送post请求异常",e);
throw e;
}
}
private static void setPostParams(HttpPost httpost, Map params) {
List nvps = new ArrayList();
Set keySet = params.keySet();
for (String key : keySet) {
nvps.add(new BasicNameValuePair(key, params.get(key).toString()));
}
try {
httpost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
CustomBizLogger.error("设置http post 参数异常",e);
}
}
private static void config(HttpRequestBase httpRequestBase) {
// 配置请求的超时设置
RequestConfig requestConfig = RequestConfig.custom()
.setConnectionRequestTimeout(timeOut)
.setConnectTimeout(timeOut).setSocketTimeout(timeOut).build();
httpRequestBase.setConfig(requestConfig);
}
/**
* 为HttpPost添加header信息
* @param post
* @param headers
*/
private static void fillHttpPostHeader(HttpPost post,Map headers){
if(headers == null){
return ;
}
for(String key:headers.keySet()){
post.addHeader(key, headers.get(key));
}
}
}
文章浏览阅读677次。matlab自学记录(一) 最最最基础的函数和简单示例1.常量(特殊变量)ans - MATLAB中运行结果的默认变量名(命令窗口中运算,系统会主动把结果赋值给ans变量)pi - 圆周率Πeps - 计算机中的最小数flops - 浮点运算数inf - 无穷大,如1/0NaN - 不定值,如0/0,∞/∞,0*∞i/j - 虚数单位nargin 函数输入变量数目narout 函数输出变量数目realmax 最大的可用正实数realmin 最小的可用正实数赋_matlab入门预习记录
文章浏览阅读804次,点赞5次,收藏5次。但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!数据结构是算法的基础, 换言之,想要学好算法,需要把数据结构学到位。程序 = 数据结构 + 算法。常用数据结构与算法实现。小编整理不易,对这份。
文章浏览阅读402次。2014[66]Rectifying characteristics of a Fe:SrTiO3/Nb:SrTiO3homojunctionXiangbiao Qiu, Xiaoyu Zhou, Aidong Li, Zhengbin Gu*,Di Wu*Superlattices and Microstructures75, 72 (2014).[65]Memristive behaviors..._wu di nanjing university, state key laboratory for novel software technology
文章浏览阅读1.5w次,点赞17次,收藏18次。亲测可用,有需要的可以mark一下!专业版:HMGNV-WCYXV-X7G9W-YCX63-B98R2企业版:HM6NR-QXX7C-DFW2Y-8B82K-WTYJV_visual studio 2015企业版密钥
文章浏览阅读589次。 严格来说,它们之间的不同就只有一个:视窗运行它们的时候调用不同的执行档案。视窗用 python.exe 运行 .py ,用 pythonw.exe 运行 .pyw 。这纯粹是因为安装视窗版 Python 时,扩展名 .py 自动被登记为用 python.exe 运行的文件,而 .pyw 则被登记为用 pythonw.exe 运行。.py 和 .pyw 之间的“其它差别”全都是 ..._python. pyw
文章浏览阅读1.3k次。DHCP服务是用来进行动态主机分配的,可以有效的避免了因手动设置IP地址所产生的错误,同时也避免了把-一个IP地址分配给多台工作站所造成的地址冲突。DHCP 提供了安全、可靠且简单的TCP/IP 网络设置,降低了配置IP地址的负担。_dhcp广播
文章浏览阅读7.4k次,点赞6次,收藏22次。由于一直有朋友在与我讨论关于UE4室内软装的系统设计问题,问题也都大同小异,正好类似项目有一些经验,因此在此分享给大家,希望能帮助更多UE4的新手和小团队。由于我本人是独立游戏开发者而非室内设计方向的,并且当初这个项目是基于VR的,本身需求更多一些,因此在此分享一个简化版的,通过传统键鼠操作的设计思路,抛砖引玉。后续可能还会继续更新更多相关的内容。_基于ue4的装修设计软件开发
文章浏览阅读3.8k次,点赞6次,收藏160次。1)LIN BUS电路 (最大波特率20Kbits/s)2).低速CAN电路(最大波特率125Kbits/s)3)高速CAN BUS电路(波特率40K~1Mbits/s)4)TJA1043T。_lf天线驱动电路
文章浏览阅读1.4w次,点赞29次,收藏81次。 一.什么是交叉熵交叉熵是一个信息论中的概念,它原来是用来估算平均编码长度的。给定两个概率分布p和q,通过q来表示p的交叉熵为: 注意,交叉熵刻画的是两个概率分布之间的距离,或可以说它刻画的是通过概率分布q来表达概率分布p的困难程度,p代表正确答案,q代表的是预测值,交叉熵越小,两个概率的分布约接近。 那么,在神经网络中怎样把前向传播得到的结果也变成概率分布呢?..._交叉熵
文章浏览阅读1w次,点赞2次,收藏29次。一、无偏估计百度:无偏估计是用样本统计量来估计总体参数时的一种无偏推断。估计量的数学期望等于被估计参数的真实值,则称此此估计量为被估计参数的无偏估计,即具有无偏性,是一种用于评价估计量优良性的准则。无偏估计的意义是:在多次重复下,它们的平均数接近所估计的参数真值。无偏估计常被应用于测验分数统计中。二、计算图片的组成分布p(x)用途:如果我们知道的图片的分布p(x),我们就可以生成新的图片,判断异常..._bayes-cnn数据分类
文章浏览阅读662次。1. ~/.vimrc"去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限set nocompatibleset autoread " 文件修改之后自动载入set completeopt=longest,menu " 自动完成set history=1000 "记录历史的行数set backspace=2 _executed by bash(1) for non-login shells.
文章浏览阅读8.5k次,点赞2次,收藏12次。RAC OGG RAC到单机 ACFS OGG 创建ACFS fbo_ggs_Linux_x64_shiphome.zip RAC OGG 单实例Rac与单实例不同之处在于rac上的goldengate 需要安装在共享存储上asmca 创建ACFS chekpointtable add extract E_RAC,tranlog,threads 3 begin nowadd exttrail /ogg/install/dirdat/extlt/rac/lt,extract E_RAC add_rac和单实例启动ogg区别