public class HttpRequest extends HttpBase<HttpRequest>
| 限定符和类型 | 字段和说明 |
|---|---|
private int |
blockSize
Chuncked块大小,0或小于0表示不设置Chuncked模式
|
private int |
connectionTimeout
默认连接超时
|
private static String |
CONTENT_TYPE_FILE_TEMPLATE |
private static String |
CONTENT_TYPE_MULTIPART_PREFIX |
private String |
cookie
Cookie
|
private Map<String,Object> |
form
存储表单数据
|
private HostnameVerifier |
hostnameVerifier
HostnameVerifier,用于HTTPS安全连接
|
(专用程序包) org.apache.http.impl.client.CloseableHttpClient |
httpclient |
private HttpConnection |
httpConnection
连接对象
|
private boolean |
isDisableCache
是否禁用缓存
|
private boolean |
isMultiPart
是否为Multipart表单
|
private boolean |
isRest
是否是REST请求模式
|
private boolean |
isStream
是否使用event-stream获取响应数据
|
private int |
maxRedirectCount
最大重定向次数
|
private Method |
method |
private Proxy |
proxy
代理
|
private int |
readTimeout
默认读取超时
|
private int |
redirectCount
重定向次数计数器,内部使用
|
private SSLSocketFactory |
ssf
SSLSocketFactory,用于HTTPS安全连接
|
private UrlBuilder |
url |
private URLStreamHandler |
urlHandler |
| 构造器和说明 |
|---|
HttpRequest(String url)
构造,URL编码默认使用UTF-8
|
HttpRequest(UrlBuilder url)
构造
|
| 限定符和类型 | 方法和说明 |
|---|---|
HttpRequest |
auth(String content)
验证,简单插入Authorization头
|
HttpRequest |
basicAuth(String username,
String password)
简单验证,生成的头信息类似于:
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
|
HttpRequest |
basicProxyAuth(String username,
String password)
简单代理验证,生成的头信息类似于:
Proxy-Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
|
HttpRequest |
bearerAuth(String token)
令牌验证,生成的头类似于:"Authorization: Bearer XXXXX",一般用于JWT
|
HttpRequest |
body(byte[] bodyBytes)
设置主体字节码
需在此方法调用前使用charset方法设置编码,否则使用默认编码UTF-8 |
HttpRequest |
body(String body)
设置内容主体
请求体body参数支持两种类型: 1. |
HttpRequest |
body(String body,
String contentType)
设置内容主体
请求体body参数支持两种类型: 1. |
static void |
closeCookie()
关闭Cookie
|
String |
contentLength()
获取内容长度
|
HttpRequest |
contentLength(int value)
设置内容长度
|
HttpRequest |
contentType(String contentType)
设置contentType
|
HttpRequest |
cookie(Collection<HttpCookie> cookies)
设置Cookie
自定义Cookie后会覆盖Hutool的默认Cookie行为 |
HttpRequest |
cookie(HttpCookie... cookies)
设置Cookie
自定义Cookie后会覆盖Hutool的默认Cookie行为 |
HttpRequest |
cookie(String cookie)
设置Cookie
自定义Cookie后会覆盖Hutool的默认Cookie行为 |
static HttpRequest |
delete(String url)
DELETE请求
|
HttpRequest |
disableCache()
禁用缓存
|
HttpRequest |
disableCookie()
禁用默认Cookie行为,此方法调用后会将Cookie置为空。
|
HttpRequest |
enableDefaultCookie()
打开默认的Cookie行为(自动回填服务器传回的Cookie)
|
HttpResponse |
execute()
执行Reuqest请求
|
HttpResponse |
execute(boolean isAsync)
执行Reuqest请求
|
HttpResponse |
executeAsync()
异步请求
异步请求后获取的 HttpResponse 为异步模式,执行完此方法后发送请求到服务器,但是并不立即读取响应内容。 |
Map<String,Resource> |
fileForm()
获取文件表单数据
|
Map<String,Object> |
form()
获取表单数据
|
HttpRequest |
form(Map<String,Object> formMap)
设置map类型表单数据
|
HttpRequest |
form(String name,
byte[] fileBytes,
String fileName)
文件byte[]表单项
一旦有文件加入,表单变为multipart/form-data |
HttpRequest |
form(String name,
File... files)
文件表单项
一旦有文件加入,表单变为multipart/form-data |
HttpRequest |
form(String name,
File file)
文件表单项
一旦有文件加入,表单变为multipart/form-data |
HttpRequest |
form(String name,
File file,
String fileName)
文件表单项
一旦有文件加入,表单变为multipart/form-data |
HttpRequest |
form(String name,
Object value)
设置表单数据
|
HttpRequest |
form(String name,
Object value,
Object... parameters)
设置表单数据
|
HttpRequest |
form(String name,
Resource resource)
文件表单项
一旦有文件加入,表单变为multipart/form-data |
static HttpRequest |
get(String url)
GET请求
|
HttpConnection |
getConnection()
|
static CookieManager |
getCookieManager()
获取Cookie管理器,用于自定义Cookie管理
|
private String |
getFormUrlEncoded()
获取编码后的表单数据,无表单数据返回""
|
Method |
getMethod()
获取Http请求方法
|
String |
getUrl()
获取请求URL
|
static HttpRequest |
head(String url)
HEAD请求
|
private void |
initConnection()
初始化网络连接
|
private org.apache.http.client.methods.HttpPost |
initStreamConnection()
初始化网络连接
|
private boolean |
isIgnoreResponseBody()
是否忽略读取响应body部分
HEAD、CONNECT、OPTIONS、TRACE方法将不读取响应体 |
boolean |
isKeepAlive() |
private boolean |
isMultipart()
判断是否为multipart/form-data表单,条件如下:
1.
|
HttpRequest |
keepAlive(boolean isKeepAlive)
设置是否为长连接
|
HttpRequest |
method(Method method)
设置请求方法
|
static HttpRequest |
options(String url)
OPTIONS请求
|
static HttpRequest |
patch(String url)
PATCH请求
|
static HttpRequest |
post(String url)
POST请求
|
static HttpRequest |
postStream(String url) |
HttpRequest |
proxyAuth(String content)
验证,简单插入Authorization头
|
static HttpRequest |
put(String url)
PUT请求
|
private HttpRequest |
putToForm(String name,
Object value)
将参数加入到form中,如果form为空,新建之。
|
private void |
send()
发送数据流
|
private void |
sendFormUrlEncoded()
发送普通表单
发送数据后自动关闭输出流 |
private void |
sendMultipart()
发送多组件请求(例如包含文件的表单)
发送数据后自动关闭输出流 |
private HttpResponse |
sendRedirectIfPossible()
调用转发,如果需要转发返回转发结果,否则返回
null |
HttpRequest |
setChunkedStreamingMode(int blockSize)
采用流方式上传数据,无需本地缓存数据。
|
HttpRequest |
setConnectionTimeout(int milliseconds)
设置连接超时,单位:毫秒
|
static void |
setCookieManager(CookieManager customCookieManager)
|
HttpRequest |
setEncodeUrlParams(boolean isEncodeUrlParams)
已过时。
编码自动完成,无需设置
|
HttpRequest |
setFollowRedirects(boolean isFollowRedirects)
设置是否打开重定向,如果打开默认重定向次数为2
此方法效果与 setMaxRedirectCount(int) 一致 |
static void |
setGlobalTimeout(int customTimeout)
设置全局默认的连接和读取超时时长
|
HttpRequest |
setHostnameVerifier(HostnameVerifier hostnameVerifier)
设置域名验证器
只针对HTTPS请求,如果不设置,不做验证,所有域名被信任 |
HttpRequest |
setHttpProxy(String host,
int port)
设置Http代理
|
HttpRequest |
setMaxRedirectCount(int maxRedirectCount)
设置最大重定向次数
如果次数小于1则表示不重定向,大于等于1表示打开重定向 |
HttpRequest |
setMethod(Method method)
设置请求方法
|
private void |
setMultipart()
设置表单类型为Multipart(文件上传)
|
HttpRequest |
setProxy(Proxy proxy)
设置代理
|
HttpRequest |
setReadTimeout(int milliseconds)
设置连接超时,单位:毫秒
|
HttpRequest |
setRest(boolean isRest)
设置是否rest模式
rest模式下get请求不会把参数附加到URL之后 |
HttpRequest |
setSSLProtocol(String protocol)
设置HTTPS安全连接协议,只针对HTTPS请求,可以使用的协议包括:
此方法调用后 setSSLSocketFactory(SSLSocketFactory) 将被覆盖。 |
HttpRequest |
setSSLSocketFactory(SSLSocketFactory ssf)
设置SSLSocketFactory
只针对HTTPS请求,如果不设置,使用默认的SSLSocketFactory 默认SSLSocketFactory为:SSLSocketFactoryBuilder.create().build(); |
HttpRequest |
setUrl(String url)
设置URL
|
HttpRequest |
setUrl(UrlBuilder urlBuilder)
设置URL
|
HttpRequest |
setUrlHandler(URLStreamHandler urlHandler)
设置
URLStreamHandler
部分环境下需要单独设置此项,例如当 WebLogic Server 实例充当 SSL 客户端角色(它会尝试通过 SSL 连接到其他服务器或应用程序)时,它会验证 SSL 服务器在数字证书中返回的主机名是否与用于连接 SSL 服务器的 URL 主机名相匹配。 |
HttpRequest |
stream() |
HttpRequest |
timeout(int milliseconds)
设置超时,单位:毫秒
超时包括: 1. |
String |
toString() |
static HttpRequest |
trace(String url)
TRACE请求
|
private void |
urlWithParamIfGet()
对于GET请求将参数加到URL中
此处不对URL中的特殊字符做单独编码 |
addHeaders, charset, charset, charset, header, header, header, header, header, header, header, header, headerList, headerMap, headers, httpVersion, httpVersion, removeHeader, removeHeaderprivate static final String CONTENT_TYPE_MULTIPART_PREFIX
private UrlBuilder url
private URLStreamHandler urlHandler
private Method method
private int connectionTimeout
private int readTimeout
private boolean isMultiPart
private String cookie
private HttpConnection httpConnection
org.apache.http.impl.client.CloseableHttpClient httpclient
private boolean isDisableCache
private boolean isRest
private int redirectCount
private int maxRedirectCount
private int blockSize
private Proxy proxy
private HostnameVerifier hostnameVerifier
private SSLSocketFactory ssf
private boolean isStream
public HttpRequest(String url)
url - URLpublic HttpRequest(UrlBuilder url)
url - UrlBuilderpublic static void setGlobalTimeout(int customTimeout)
customTimeout - 超时时长HttpGlobalConfig.setTimeout(int)public static CookieManager getCookieManager()
CookieManagerGlobalCookieManager.getCookieManager()public static void setCookieManager(CookieManager customCookieManager)
customCookieManager - 自定义的CookieManagerGlobalCookieManager.setCookieManager(CookieManager)public static void closeCookie()
GlobalCookieManager.setCookieManager(CookieManager)public static HttpRequest post(String url)
url - URLpublic static HttpRequest postStream(String url)
public static HttpRequest get(String url)
url - URLpublic static HttpRequest head(String url)
url - URLpublic static HttpRequest options(String url)
url - URLpublic static HttpRequest put(String url)
url - URLpublic static HttpRequest patch(String url)
url - URLpublic static HttpRequest delete(String url)
url - URLpublic static HttpRequest trace(String url)
url - URLpublic String getUrl()
public HttpRequest setUrl(String url)
url - url字符串public HttpRequest setUrl(UrlBuilder urlBuilder)
urlBuilder - url字符串public HttpRequest setUrlHandler(URLStreamHandler urlHandler)
URLStreamHandler
部分环境下需要单独设置此项,例如当 WebLogic Server 实例充当 SSL 客户端角色(它会尝试通过 SSL 连接到其他服务器或应用程序)时,
它会验证 SSL 服务器在数字证书中返回的主机名是否与用于连接 SSL 服务器的 URL 主机名相匹配。如果主机名不匹配,则删除此连接。
因此weblogic不支持https的sni协议的主机名验证,此时需要将此值设置为sun.net.www.protocol.https.Handler对象。
相关issue见:https://gitee.com/loolly/hutool/issues/IMD1X
urlHandler - URLStreamHandlerpublic HttpRequest setMethod(Method method)
method - HTTP方法method(Method)public HttpConnection getConnection()
HttpConnectionpublic HttpRequest method(Method method)
method - HTTP方法public HttpRequest stream()
public HttpRequest contentType(String contentType)
contentType - contentTypepublic HttpRequest keepAlive(boolean isKeepAlive)
isKeepAlive - 是否长连接public boolean isKeepAlive()
public String contentLength()
public HttpRequest contentLength(int value)
value - 长度public HttpRequest cookie(Collection<HttpCookie> cookies)
cookies - Cookie值数组,如果为null则设置无效,使用默认Cookie行为public HttpRequest cookie(HttpCookie... cookies)
cookies - Cookie值数组,如果为null则设置无效,使用默认Cookie行为public HttpRequest cookie(String cookie)
cookie - Cookie值,如果为null则设置无效,使用默认Cookie行为public HttpRequest disableCookie()
cookie(String)方法自定义Cookie。enableDefaultCookie()public HttpRequest enableDefaultCookie()
public HttpRequest form(String name, Object value)
name - 名value - 值public HttpRequest form(String name, Object value, Object... parameters)
name - 名value - 值parameters - 参数对,奇数为名,偶数为值public HttpRequest form(Map<String,Object> formMap)
formMap - 表单内容public HttpRequest form(String name, File... files)
name - 名files - 需要上传的文件,为空跳过public HttpRequest form(String name, File file)
name - 名file - 需要上传的文件public HttpRequest form(String name, File file, String fileName)
name - 名file - 需要上传的文件fileName - 文件名,为空使用文件默认的文件名public HttpRequest form(String name, byte[] fileBytes, String fileName)
name - 名fileBytes - 需要上传的文件fileName - 文件名public HttpRequest form(String name, Resource resource)
name - 名resource - 数据源,文件可以使用FileResource包装使用public HttpRequest body(String body)
1. 标准参数,例如 a=1&b=2 这种格式 2. Rest模式,此时body需要传入一个JSON或者XML字符串,Hutool会自动绑定其对应的Content-Type
body - 请求体public HttpRequest body(String body, String contentType)
1. 标准参数,例如 a=1&b=2 这种格式 2. Rest模式,此时body需要传入一个JSON或者XML字符串,Hutool会自动绑定其对应的Content-Type
body - 请求体contentType - 请求体类型,null表示自动判断类型public HttpRequest body(byte[] bodyBytes)
bodyBytes - 主体public HttpRequest timeout(int milliseconds)
1. 连接超时 2. 读取响应超时
milliseconds - 超时毫秒数setConnectionTimeout(int),
setReadTimeout(int)public HttpRequest setConnectionTimeout(int milliseconds)
milliseconds - 超时毫秒数public HttpRequest setReadTimeout(int milliseconds)
milliseconds - 超时毫秒数public HttpRequest disableCache()
@Deprecated public HttpRequest setEncodeUrlParams(boolean isEncodeUrlParams)
isEncodeUrlParams - 是否对URL中的参数进行编码public HttpRequest setFollowRedirects(boolean isFollowRedirects)
setMaxRedirectCount(int) 一致isFollowRedirects - 是否打开重定向public HttpRequest setMaxRedirectCount(int maxRedirectCount)
maxRedirectCount - 最大重定向次数public HttpRequest setHostnameVerifier(HostnameVerifier hostnameVerifier)
hostnameVerifier - HostnameVerifierpublic HttpRequest setHttpProxy(String host, int port)
host - 代理 主机port - 代理 端口public HttpRequest setProxy(Proxy proxy)
proxy - 代理 Proxypublic HttpRequest setSSLSocketFactory(SSLSocketFactory ssf)
ssf - SSLScketFactorypublic HttpRequest setSSLProtocol(String protocol)
setSSLSocketFactory(SSLSocketFactory) 将被覆盖。
1. TLSv1.2 2. TLSv1.1 3. SSLv3 ...
protocol - 协议SSLSocketFactoryBuilder,
setSSLSocketFactory(SSLSocketFactory)public HttpRequest setRest(boolean isRest)
isRest - 是否rest模式public HttpRequest setChunkedStreamingMode(int blockSize)
blockSize - 块大小(bytes数),0或小于0表示不设置Chuncked模式public HttpResponse execute()
public HttpResponse executeAsync()
HttpResponse 为异步模式,执行完此方法后发送请求到服务器,但是并不立即读取响应内容。一般执行完execute之后会把响应内容全部读出来放在一个 byte数组里,如果你响应的内容太多内存就爆了,此法是发送完请求不直接读响应内容,等有需要的时候读。
public HttpResponse execute(boolean isAsync)
isAsync - 是否异步public HttpRequest basicAuth(String username, String password)
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
username - 用户名password - 密码public HttpRequest basicProxyAuth(String username, String password)
Proxy-Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
username - 用户名password - 密码public HttpRequest bearerAuth(String token)
token - 令牌内容public HttpRequest auth(String content)
content - 验证内容public HttpRequest proxyAuth(String content)
content - 验证内容public String toString()
toString 在类中 HttpBase<HttpRequest>private void initConnection()
private org.apache.http.client.methods.HttpPost initStreamConnection()
private void urlWithParamIfGet()
private HttpResponse sendRedirectIfPossible()
nullHttpResponse,无转发返回 nullprivate void send()
throws IORuntimeException
IORuntimeException - IO异常private void sendFormUrlEncoded()
throws IOException
IOException - IO异常private String getFormUrlEncoded()
private void sendMultipart()
throws IOException
IOException - IO异常private void setMultipart()
private boolean isIgnoreResponseBody()
private boolean isMultipart()
1. 存在资源对象(fileForm非空)
2. 用户自定义头为multipart/form-data开头
private HttpRequest putToForm(String name, Object value)
name - 表单属性名value - 属性值Copyright © 2023. All rights reserved.