package com.Annual.Httpclient;
import java.io.File;
import java.util.Iterator;
import java.util.Map;
import org.apache.http.entity.mime.content.ByteArrayBody;
import org.apache.http.entity.mime.content.FileBody;
public class HttpHelper {
//请求读取超时
private Integer socketTimeout = 6000;
//URL的连接等待超时时间
private Integer connectTimeout = 5000;
//连接池获取连接的超时时间
private Integer connectionRequestTimeout = 1000;
private boolean isConnManager = false;
/**
* 默认不使用连接池
*/
public HttpHelper() {
}
/**
* 使用连接池
*
* /**
* @since
* PoolingHttpClientConnectionManager
* @since
* maxTotalPool = 200 ;
* maxConPerRoute = 80;
* @since
* Connection
* @since
* socketTimeout = 5000;
* connectionRequestTimeout = 1000;
* connectTimeout = 2000;
* @param isConnManager true
*/
public HttpHelper(boolean isConnManager) {
this.isConnManager = isConnManager;
}
/**
* 自定义链接对象时间
* @param socketTimeout 请求读取超时
* @param connectTimeout URL的连接等待超时时间
* @param connectionRequestTimeout 连接池获取连接的超时时间
* @param isConnManager 是否启用连接池管理
*/
public HttpHelper(Integer socketTimeout,Integer connectTimeout,Integer connectionRequestTimeout,boolean isConnManager) {
this.socketTimeout = socketTimeout;
this.connectTimeout = connectTimeout;
this.connectionRequestTimeout = connectionRequestTimeout;
this.isConnManager = isConnManager;
}
/**
* 使用Get方式 根据URL地址,获取ResponseContent对象
*
* @param url完整的URL地址
* @return ResponseContent 如果发生异常则返回null,否则返回ResponseContent对象
*/
public ResponseContent getUrlRespContent(String url) {
HttpClientWrapper hw = new HttpClientWrapper(connectionRequestTimeout, connectTimeout, socketTimeout,isConnManager);
ResponseContent response = null;
try {
response = hw.getResponse(url);
} catch (Exception e) {
e.printStackTrace();
}
return response;
}
/**
* 使用Get方式 根据URL地址,获取ResponseContent对象
*
* @param url 完整的URL地址
* @param urlEncoding
* @return ResponseContent 如果发生异常则返回null,否则返回ResponseContent对象
*/
public ResponseContent getUrlRespContent(String url, String urlEncoding) {
HttpClientWrapper hw = new HttpClientWrapper(connectionRequestTimeout, connectTimeout, socketTimeout,isConnManager);
ResponseContent response = null;
try {
response = hw.getResponse(url, urlEncoding);
} catch (Exception e) {
e.printStackTrace();
}
return response;
}
/**
* 将参数拼装在url中,进行post请求。
*
* @param url 如果有参数直接在拼接在url后面即可
* @return
*/
public ResponseContent postUrl(String url) {
HttpClientWrapper hw = new HttpClientWrapper(connectionRequestTimeout, connectTimeout, socketTimeout,isConnManager);
ResponseContent ret = null;
try {
setParams(url, hw);
ret = hw.postNV(url);
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
/**
* 将参数进行post请求。
*
* @param url 如果有参数直接在拼接在url后面即可
* @return
*/
public ResponseContent post(String url,Map paramsMap) {
HttpClientWrapper hw = new HttpClientWrapper(connectionRequestTimeout, connectTimeout, socketTimeout,isConnManager);
ResponseContent ret = null;
try {
Iterator iterator = paramsMap.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next();
Object value = paramsMap.get(key);
if (value != null && !"".equals(value)) {
hw.addNV(key, String.valueOf(value));
} else {
hw.addNV(key, "");
}
}
ret = hw.postNV(url);
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
/**
* 上传文件(包括图片)
*
* @param url 请求URL
* @param paramsMap 参数和值
* @return
*/
public ResponseContent postEntity(String url, Map paramsMap) {
HttpClientWrapper hw = new HttpClientWrapper(connectionRequestTimeout, connectTimeout, socketTimeout,isConnManager);
ResponseContent ret = null;
try {
setParams(url, hw);
Iterator iterator = paramsMap.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next();
Object value = paramsMap.get(key);
if (value instanceof File) {
FileBody fileBody = new FileBody((File) value);
hw.getContentBodies().add(fileBody);
} else if (value instanceof byte[]) {
byte[] byteVlue = (byte[]) value;
ByteArrayBody byteArrayBody = new ByteArrayBody(byteVlue, key);
hw.getContentBodies().add(byteArrayBody);
} else {
if (value != null && !"".equals(value)) {
hw.addNV(key, String.valueOf(value));
} else {
hw.addNV(key, "");
}
}
}
ret = hw.postEntity(url);
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
private static void setParams(String url, HttpClientWrapper hw) {
String[] paramStr = url.split("[?]", 2);
if (paramStr == null || paramStr.length != 2) {
return;
}
String[] paramArray = paramStr[1].split("[&]");
if (paramArray == null) {
return;
}
for (String param : paramArray) {
if (param == null || "".equals(param.trim())) {
continue;
}
String[] keyValue = param.split("[=]", 2);
if (keyValue == null || keyValue.length != 2) {
continue;
}
hw.addNV(keyValue[0], keyValue[1]);
}
}
/**
* 使用post方式,发布对象转成的json给Rest服务。
*
* @param url
* @param jsonBody
* @return
*/
public ResponseContent postJsonEntity(String url, String jsonBody) {
return postEntity(url, jsonBody, "application/json");
}
/**
* 使用post方式,发布对象转成的xml给Rest服务
*
* @param url URL地址
* @param xmlBody xml文本字符串
* @return ResponseContent 如果发生异常则返回空,否则返回ResponseContent对象
*/
public ResponseContent postXmlEntity(String url, String xmlBody) {
return postEntity(url, xmlBody, "application/xml");
}
private ResponseContent postEntity(String url, String body, String contentType) {
HttpClientWrapper hw = new HttpClientWrapper(connectionRequestTimeout, connectTimeout, socketTimeout,isConnManager);
ResponseContent ret = null;
try {
hw.addNV("body", body);
ret = hw.postNV(url, contentType);
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
}
import java.io.File;
import java.util.Iterator;
import java.util.Map;
import org.apache.http.entity.mime.content.ByteArrayBody;
import org.apache.http.entity.mime.content.FileBody;
public class HttpHelper {
//请求读取超时
private Integer socketTimeout = 6000;
//URL的连接等待超时时间
private Integer connectTimeout = 5000;
//连接池获取连接的超时时间
private Integer connectionRequestTimeout = 1000;
private boolean isConnManager = false;
/**
* 默认不使用连接池
*/
public HttpHelper() {
}
/**
* 使用连接池
*
* /**
* @since
* PoolingHttpClientConnectionManager
* @since
* maxTotalPool = 200 ;
* maxConPerRoute = 80;
* @since
* Connection
* @since
* socketTimeout = 5000;
* connectionRequestTimeout = 1000;
* connectTimeout = 2000;
* @param isConnManager true
*/
public HttpHelper(boolean isConnManager) {
this.isConnManager = isConnManager;
}
/**
* 自定义链接对象时间
* @param socketTimeout 请求读取超时
* @param connectTimeout URL的连接等待超时时间
* @param connectionRequestTimeout 连接池获取连接的超时时间
* @param isConnManager 是否启用连接池管理
*/
public HttpHelper(Integer socketTimeout,Integer connectTimeout,Integer connectionRequestTimeout,boolean isConnManager) {
this.socketTimeout = socketTimeout;
this.connectTimeout = connectTimeout;
this.connectionRequestTimeout = connectionRequestTimeout;
this.isConnManager = isConnManager;
}
/**
* 使用Get方式 根据URL地址,获取ResponseContent对象
*
* @param url完整的URL地址
* @return ResponseContent 如果发生异常则返回null,否则返回ResponseContent对象
*/
public ResponseContent getUrlRespContent(String url) {
HttpClientWrapper hw = new HttpClientWrapper(connectionRequestTimeout, connectTimeout, socketTimeout,isConnManager);
ResponseContent response = null;
try {
response = hw.getResponse(url);
} catch (Exception e) {
e.printStackTrace();
}
return response;
}
/**
* 使用Get方式 根据URL地址,获取ResponseContent对象
*
* @param url 完整的URL地址
* @param urlEncoding
* @return ResponseContent 如果发生异常则返回null,否则返回ResponseContent对象
*/
public ResponseContent getUrlRespContent(String url, String urlEncoding) {
HttpClientWrapper hw = new HttpClientWrapper(connectionRequestTimeout, connectTimeout, socketTimeout,isConnManager);
ResponseContent response = null;
try {
response = hw.getResponse(url, urlEncoding);
} catch (Exception e) {
e.printStackTrace();
}
return response;
}
/**
* 将参数拼装在url中,进行post请求。
*
* @param url 如果有参数直接在拼接在url后面即可
* @return
*/
public ResponseContent postUrl(String url) {
HttpClientWrapper hw = new HttpClientWrapper(connectionRequestTimeout, connectTimeout, socketTimeout,isConnManager);
ResponseContent ret = null;
try {
setParams(url, hw);
ret = hw.postNV(url);
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
/**
* 将参数进行post请求。
*
* @param url 如果有参数直接在拼接在url后面即可
* @return
*/
public ResponseContent post(String url,Map paramsMap) {
HttpClientWrapper hw = new HttpClientWrapper(connectionRequestTimeout, connectTimeout, socketTimeout,isConnManager);
ResponseContent ret = null;
try {
Iterator iterator = paramsMap.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next();
Object value = paramsMap.get(key);
if (value != null && !"".equals(value)) {
hw.addNV(key, String.valueOf(value));
} else {
hw.addNV(key, "");
}
}
ret = hw.postNV(url);
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
/**
* 上传文件(包括图片)
*
* @param url 请求URL
* @param paramsMap 参数和值
* @return
*/
public ResponseContent postEntity(String url, Map paramsMap) {
HttpClientWrapper hw = new HttpClientWrapper(connectionRequestTimeout, connectTimeout, socketTimeout,isConnManager);
ResponseContent ret = null;
try {
setParams(url, hw);
Iterator iterator = paramsMap.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next();
Object value = paramsMap.get(key);
if (value instanceof File) {
FileBody fileBody = new FileBody((File) value);
hw.getContentBodies().add(fileBody);
} else if (value instanceof byte[]) {
byte[] byteVlue = (byte[]) value;
ByteArrayBody byteArrayBody = new ByteArrayBody(byteVlue, key);
hw.getContentBodies().add(byteArrayBody);
} else {
if (value != null && !"".equals(value)) {
hw.addNV(key, String.valueOf(value));
} else {
hw.addNV(key, "");
}
}
}
ret = hw.postEntity(url);
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
private static void setParams(String url, HttpClientWrapper hw) {
String[] paramStr = url.split("[?]", 2);
if (paramStr == null || paramStr.length != 2) {
return;
}
String[] paramArray = paramStr[1].split("[&]");
if (paramArray == null) {
return;
}
for (String param : paramArray) {
if (param == null || "".equals(param.trim())) {
continue;
}
String[] keyValue = param.split("[=]", 2);
if (keyValue == null || keyValue.length != 2) {
continue;
}
hw.addNV(keyValue[0], keyValue[1]);
}
}
/**
* 使用post方式,发布对象转成的json给Rest服务。
*
* @param url
* @param jsonBody
* @return
*/
public ResponseContent postJsonEntity(String url, String jsonBody) {
return postEntity(url, jsonBody, "application/json");
}
/**
* 使用post方式,发布对象转成的xml给Rest服务
*
* @param url URL地址
* @param xmlBody xml文本字符串
* @return ResponseContent 如果发生异常则返回空,否则返回ResponseContent对象
*/
public ResponseContent postXmlEntity(String url, String xmlBody) {
return postEntity(url, xmlBody, "application/xml");
}
private ResponseContent postEntity(String url, String body, String contentType) {
HttpClientWrapper hw = new HttpClientWrapper(connectionRequestTimeout, connectTimeout, socketTimeout,isConnManager);
ResponseContent ret = null;
try {
hw.addNV("body", body);
ret = hw.postNV(url, contentType);
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
}
相关推荐
这是一本以面试题为入口讲解 Java 核心内容的技术书籍,书中内容极力的向你证实代码是对数学逻辑的具体实现。当你仔细阅读书籍时,会发现Java中有大量的数学知识,包括:扰动函数、负载因子、拉链寻址、开放寻址、...
Java OCR(Optical Character Recognition,光学字符识别)技术是一种计算机视觉领域的应用,它能将图像中的文字转换成可编辑的文本格式。这项技术在各种场景下都有广泛应用,比如文档扫描、车牌识别、发票处理等。...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...
java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java...
JAVA开发人员最新版本7.0 api文档!本文档是 Java Platform Standard Edition 7 的 API !Java 1.7 API的中文帮助文档。 深圳电信培训中心 徐海蛟博士教学用api 7.0中文文档。支持全文检索,在线即时查询。 里面列...
java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
Java2Pas是一个实用工具,主要用于将Java编程语言编写的源代码转换为Pascal语言的等效代码。这个工具对于那些需要在两种语言之间迁移代码或者理解不同编程语言语法的开发者来说非常有价值。Java和Pascal虽然都是面向...
### Java 错误处理:java.lang.OutOfMemoryError: Java heap space 在Java应用程序开发过程中,经常遇到的一个问题就是内存溢出错误,特别是在处理大量数据或长时间运行的应用时。其中,“java.lang....
Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 ...
标题"smali2java——直接将smali转换成java"揭示了本文的核心主题,即一个名为"smali2java"的工具,它的主要功能是将编程语言Smali转换为Java。Smali是一种低级的、汇编式的语言,通常用于Android应用的逆向工程,而...
Java到Python的转换工具,如标题“java2python”所示,是编程领域中的一种实用技术,旨在帮助开发者将已有的Java代码转换为Python语言。这种转换对于那些熟悉Java但希望进入Python生态系统,或者想要利用Python特定...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
jdk11官方版是一款专为java编程人员推出的软件开发工具。JAVA JDK 11最新版可以帮助用户轻松的获取到JAVA的运行环境,让你在电脑上进行程序开发操作。JAVA JDK 11软件新增Epsilon 垃圾收集器和lambda 参数的局部变量...
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK是学好Java的...