Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
kt-keystone
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Matrix
kt-keystone
Commits
410c6a6c
提交
410c6a6c
authored
1月 06, 2022
作者:
黄夏豪
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(base):添加了动作和动态变量的HTTP实现
上级
f545760e
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
369 行增加
和
0 行删除
+369
-0
pom.xml
kt-base/pom.xml
+74
-0
HttpRequestConfig.java
...se/src/main/java/org/matrix/config/HttpRequestConfig.java
+85
-0
HttpRequestDetail.java
...se/src/main/java/org/matrix/entity/HttpRequestDetail.java
+65
-0
HttpRequestType.java
kt-base/src/main/java/org/matrix/entity/HttpRequestType.java
+43
-0
HttpResponseDetail.java
...e/src/main/java/org/matrix/entity/HttpResponseDetail.java
+27
-0
MultiPartRequestBodyType.java
...main/java/org/matrix/entity/MultiPartRequestBodyType.java
+35
-0
RequestBody.java
kt-base/src/main/java/org/matrix/entity/RequestBody.java
+20
-0
RequestHeader.java
kt-base/src/main/java/org/matrix/entity/RequestHeader.java
+20
-0
HttpClientUtil.java
kt-base/src/main/java/org/matrix/util/HttpClientUtil.java
+0
-0
没有找到文件。
kt-base/pom.xml
浏览文件 @
410c6a6c
...
@@ -17,6 +17,80 @@
...
@@ -17,6 +17,80 @@
<artifactId>
kt-kit
</artifactId>
<artifactId>
kt-kit
</artifactId>
</dependency>
</dependency>
<!-- fastjson -->
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<version>
1.2.39
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<version>
1.18.22
</version>
<scope>
provided
</scope>
</dependency>
<!-- httpClient -->
<dependency>
<groupId>
org.apache.httpcomponents
</groupId>
<artifactId>
httpclient
</artifactId>
<version>
4.5.10
</version>
</dependency>
<!-- httpclient缓存-->
<dependency>
<groupId>
org.apache.httpcomponents
</groupId>
<artifactId>
httpclient-cache
</artifactId>
<version>
4.5
</version>
</dependency>
<!-- http的mime类型都在这里面-->
<dependency>
<groupId>
org.apache.httpcomponents
</groupId>
<artifactId>
httpmime
</artifactId>
<version>
4.3.2
</version>
</dependency>
<dependency>
<groupId>
commons-io
</groupId>
<artifactId>
commons-io
</artifactId>
<version>
2.6
</version>
</dependency>
<dependency>
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-lang3
</artifactId>
<version>
3.4
</version>
</dependency>
<dependency>
<groupId>
commons-httpclient
</groupId>
<artifactId>
commons-httpclient
</artifactId>
<version>
3.1
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.netty/netty-codec-http -->
<dependency>
<groupId>
io.netty
</groupId>
<artifactId>
netty-codec-http
</artifactId>
<version>
4.1.69.Final
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-web
</artifactId>
<version>
5.3.10
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
<version>
2.8.0
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
<version>
2.8.0
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<groupId>
org.projectlombok
</groupId>
...
...
kt-base/src/main/java/org/matrix/config/HttpRequestConfig.java
0 → 100644
浏览文件 @
410c6a6c
package
org
.
matrix
.
config
;
import
org.apache.http.client.CookieStore
;
import
org.apache.http.client.config.RequestConfig
;
import
org.apache.http.config.Registry
;
import
org.apache.http.config.RegistryBuilder
;
import
org.apache.http.config.SocketConfig
;
import
org.apache.http.conn.socket.ConnectionSocketFactory
;
import
org.apache.http.conn.socket.PlainConnectionSocketFactory
;
import
org.apache.http.conn.ssl.NoopHostnameVerifier
;
import
org.apache.http.conn.ssl.SSLConnectionSocketFactory
;
import
org.apache.http.conn.ssl.TrustStrategy
;
import
org.apache.http.impl.NoConnectionReuseStrategy
;
import
org.apache.http.impl.client.BasicCookieStore
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.DefaultHttpRequestRetryHandler
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.impl.conn.PoolingHttpClientConnectionManager
;
import
javax.net.ssl.SSLContext
;
import
java.security.KeyManagementException
;
import
java.security.KeyStoreException
;
import
java.security.NoSuchAlgorithmException
;
import
java.security.cert.X509Certificate
;
import
java.util.concurrent.TimeUnit
;
public
class
HttpRequestConfig
{
/**
* HttpClient的Cookie管理器,可在其他类中调用该Bean清空Cookie缓存。
* 主要针对某些网站Cookie多次使用会造成Cookie失效的问题
* @return
*/
public
CookieStore
cookieStore
(){
CookieStore
cookieStore
=
new
BasicCookieStore
();
return
cookieStore
;
}
/**
* HttpClient的配置,所返回的CloseableHttpClient可以用来发送网络请求。
* @return
* @throws KeyStoreException
* @throws NoSuchAlgorithmException
* @throws KeyManagementException
*/
public
CloseableHttpClient
client
()
throws
KeyStoreException
,
NoSuchAlgorithmException
,
KeyManagementException
{
TrustStrategy
acceptingTrustStrategy
=
(
X509Certificate
[]
x509Certificates
,
String
s
)
->
true
;
SSLContext
sslContext
=
org
.
apache
.
http
.
ssl
.
SSLContexts
.
custom
()
.
loadTrustMaterial
(
null
,
acceptingTrustStrategy
)
.
build
();
SSLConnectionSocketFactory
csf
=
new
SSLConnectionSocketFactory
(
sslContext
,
null
,
null
,
NoopHostnameVerifier
.
INSTANCE
);
SocketConfig
socketConfig
=
SocketConfig
.
custom
()
.
setSoKeepAlive
(
false
)
.
setSoLinger
(
1
)
.
setSoReuseAddress
(
true
)
.
setSoTimeout
(
5000
)
.
setTcpNoDelay
(
true
).
build
();
Registry
<
ConnectionSocketFactory
>
registry
=
RegistryBuilder
.<
ConnectionSocketFactory
>
create
()
.
register
(
"http"
,
PlainConnectionSocketFactory
.
getSocketFactory
())
.
register
(
"https"
,
csf
)
.
build
();
PoolingHttpClientConnectionManager
connectionManager
=
new
PoolingHttpClientConnectionManager
(
registry
);
//最大连接数3000
connectionManager
.
setMaxTotal
(
3000
);
//路由链接数400
connectionManager
.
setDefaultMaxPerRoute
(
400
);
RequestConfig
requestConfig
=
RequestConfig
.
custom
()
.
setMaxRedirects
(
1
)
.
setRedirectsEnabled
(
true
)
.
build
();
return
HttpClients
.
custom
().
setDefaultRequestConfig
(
requestConfig
)
.
setConnectionManager
(
connectionManager
)
.
setDefaultSocketConfig
(
socketConfig
)
.
setConnectionReuseStrategy
(
new
NoConnectionReuseStrategy
())
.
evictExpiredConnections
()
.
evictIdleConnections
(
30
,
TimeUnit
.
SECONDS
)
.
setRetryHandler
(
new
DefaultHttpRequestRetryHandler
())
.
disableAutomaticRetries
()
.
disableRedirectHandling
()
.
setDefaultCookieStore
(
cookieStore
())
.
build
();
}
}
kt-base/src/main/java/org/matrix/entity/HttpRequestDetail.java
0 → 100644
浏览文件 @
410c6a6c
package
org
.
matrix
.
entity
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.apache.http.Header
;
import
org.apache.http.message.BasicHeader
;
import
org.springframework.http.HttpMethod
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Data
public
class
HttpRequestDetail
{
@ApiModelProperty
(
"请求头"
)
private
List
<
RequestHeader
>
headers
=
new
ArrayList
<>();
@ApiModelProperty
(
"URL"
)
private
String
url
=
new
String
();
// @ApiModelProperty("请求类型")
private
HttpRequestType
requestType
=
HttpRequestType
.
NONE
;
@ApiModelProperty
(
"请求方法"
)
private
HttpMethod
method
;
@ApiModelProperty
(
"字符串入参"
)
private
String
stringValue
=
new
String
();
@ApiModelProperty
(
"键值对入参"
)
private
List
<
RequestBody
>
requestBodies
=
new
ArrayList
<>();
/**
* 增加键值对入参
* @param requestBody
* @return
*/
private
Boolean
addRequestBody
(
RequestBody
requestBody
)
{
return
requestBodies
.
add
(
requestBody
);
}
/**
* 增加请求头
* @param name
* @param value
* @return
*/
public
Boolean
addHeaders
(
String
name
,
String
value
)
{
return
headers
.
add
(
new
RequestHeader
(
name
,
value
));
}
/**
* 以数组的形式获取请求头
* @return
*/
public
Header
[]
getHeadersArray
()
{
List
<
BasicHeader
>
collect
=
headers
.
stream
().
map
(
RequestHeader:
:
getBasicHeader
).
collect
(
Collectors
.
toList
());
return
collect
.
toArray
(
new
Header
[
collect
.
size
()]);
}
}
kt-base/src/main/java/org/matrix/entity/HttpRequestType.java
0 → 100644
浏览文件 @
410c6a6c
package
org
.
matrix
.
entity
;
import
org.springframework.lang.Nullable
;
import
java.util.HashMap
;
import
java.util.Map
;
public
enum
HttpRequestType
{
QUERY
,
REST
,
FORM_DATA
,
X_WWW_FORM_URLENCODED
,
TEXT
,
JSON
,
XML
,
BINARY
,
NONE
;
private
static
final
Map
<
String
,
HttpRequestType
>
mappings
=
new
HashMap
(
16
);
private
HttpRequestType
()
{
}
@Nullable
public
static
HttpRequestType
resolve
(
@Nullable
String
method
)
{
return
method
!=
null
?
mappings
.
get
(
method
)
:
null
;
}
public
boolean
matches
(
String
method
)
{
return
this
.
name
().
equals
(
method
);
}
static
{
HttpRequestType
[]
var0
=
values
();
int
var1
=
var0
.
length
;
for
(
int
var2
=
0
;
var2
<
var1
;
++
var2
)
{
HttpRequestType
httpMethod
=
var0
[
var2
];
mappings
.
put
(
httpMethod
.
name
(),
httpMethod
);
}
}
}
kt-base/src/main/java/org/matrix/entity/HttpResponseDetail.java
0 → 100644
浏览文件 @
410c6a6c
package
org
.
matrix
.
entity
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.apache.http.client.methods.CloseableHttpResponse
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
HttpResponseDetail
{
@ApiModelProperty
(
"HttpClient响应体"
)
private
CloseableHttpResponse
response
;
@ApiModelProperty
(
"响应的内容,已转换为字符串"
)
private
String
responseBody
=
"error request"
;
@ApiModelProperty
(
"响应状态,例如:200、401、500"
)
private
Integer
statusCode
=
500
;
@ApiModelProperty
(
"响应时间,单位为 ms "
)
private
Long
responseTime
=
0
l
;
}
kt-base/src/main/java/org/matrix/entity/MultiPartRequestBodyType.java
0 → 100644
浏览文件 @
410c6a6c
package
org
.
matrix
.
entity
;
import
org.springframework.lang.Nullable
;
import
java.util.HashMap
;
import
java.util.Map
;
public
enum
MultiPartRequestBodyType
{
TEXT
,
FILE
;
private
static
final
Map
<
String
,
MultiPartRequestBodyType
>
mappings
=
new
HashMap
(
16
);
private
MultiPartRequestBodyType
()
{
}
public
static
MultiPartRequestBodyType
resolve
(
String
method
)
{
return
method
!=
null
?
mappings
.
get
(
method
)
:
null
;
}
public
boolean
matches
(
String
method
)
{
return
this
.
name
().
equals
(
method
);
}
static
{
MultiPartRequestBodyType
[]
var0
=
values
();
int
var1
=
var0
.
length
;
for
(
int
var2
=
0
;
var2
<
var1
;
++
var2
)
{
MultiPartRequestBodyType
httpMethod
=
var0
[
var2
];
mappings
.
put
(
httpMethod
.
name
(),
httpMethod
);
}
}
}
kt-base/src/main/java/org/matrix/entity/RequestBody.java
0 → 100644
浏览文件 @
410c6a6c
package
org
.
matrix
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
RequestBody
{
// @ApiModelProperty("键")
private
String
name
;
// @ApiModelProperty("参数类型,文件或者文本")
private
MultiPartRequestBodyType
type
;
// @ApiModelProperty("值")
private
String
value
;
}
kt-base/src/main/java/org/matrix/entity/RequestHeader.java
0 → 100644
浏览文件 @
410c6a6c
package
org
.
matrix
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.apache.http.message.BasicHeader
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
RequestHeader
{
private
String
name
;
private
String
value
;
public
BasicHeader
getBasicHeader
(){
return
new
BasicHeader
(
name
,
value
);
}
}
kt-base/src/main/java/org/matrix/util/HttpClientUtil.java
0 → 100644
浏览文件 @
410c6a6c
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论