Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gic-qywx-self
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
haoban3.0
gic-qywx-self
Commits
4cb23962
Commit
4cb23962
authored
Jun 12, 2023
by
王祖波
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
透传request和response请求头
parent
b1b55f0a
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
70 additions
and
40 deletions
+70
-40
HttpClient.java
src/main/java/com/gic/qywx/self/HttpClient.java
+59
-30
QywxController.java
src/main/java/com/gic/qywx/self/QywxController.java
+11
-10
No files found.
src/main/java/com/gic/qywx/self/HttpClient.java
View file @
4cb23962
...
@@ -7,18 +7,10 @@ import java.io.UnsupportedEncodingException;
...
@@ -7,18 +7,10 @@ import java.io.UnsupportedEncodingException;
import
java.net.HttpURLConnection
;
import
java.net.HttpURLConnection
;
import
java.net.InetAddress
;
import
java.net.InetAddress
;
import
java.net.UnknownHostException
;
import
java.net.UnknownHostException
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.Map.Entry
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.*
;
import
org.apache.http.HttpResponse
;
import
org.apache.http.HttpVersion
;
import
org.apache.http.NameValuePair
;
import
org.apache.http.auth.AuthScope
;
import
org.apache.http.auth.AuthScope
;
import
org.apache.http.auth.UsernamePasswordCredentials
;
import
org.apache.http.auth.UsernamePasswordCredentials
;
import
org.apache.http.client.ClientProtocolException
;
import
org.apache.http.client.ClientProtocolException
;
...
@@ -26,6 +18,7 @@ import org.apache.http.client.CredentialsProvider;
...
@@ -26,6 +18,7 @@ import org.apache.http.client.CredentialsProvider;
import
org.apache.http.client.entity.UrlEncodedFormEntity
;
import
org.apache.http.client.entity.UrlEncodedFormEntity
;
import
org.apache.http.client.methods.HttpGet
;
import
org.apache.http.client.methods.HttpGet
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.client.methods.HttpRequestBase
;
import
org.apache.http.conn.ClientConnectionManager
;
import
org.apache.http.conn.ClientConnectionManager
;
import
org.apache.http.conn.params.ConnManagerParams
;
import
org.apache.http.conn.params.ConnManagerParams
;
import
org.apache.http.conn.params.ConnPerRouteBean
;
import
org.apache.http.conn.params.ConnPerRouteBean
;
...
@@ -53,6 +46,9 @@ import org.apache.logging.log4j.Logger;
...
@@ -53,6 +46,9 @@ import org.apache.logging.log4j.Logger;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
public
class
HttpClient
{
public
class
HttpClient
{
private
static
Logger
logger
=
LogManager
.
getLogger
(
HttpClient
.
class
);
private
static
Logger
logger
=
LogManager
.
getLogger
(
HttpClient
.
class
);
...
@@ -98,11 +94,11 @@ public class HttpClient {
...
@@ -98,11 +94,11 @@ public class HttpClient {
return
mHttpClient
;
return
mHttpClient
;
}
}
public
static
Map
<
String
,
Object
>
getWinxinResByJson
(
String
url
,
String
jsonStr
,
byte
[]
b
)
{
public
static
Map
<
String
,
Object
>
getWinxinResByJson
(
String
url
,
String
jsonStr
,
byte
[]
b
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
return
getWinxinResByJson
(
url
,
jsonStr
,
null
,
b
);
return
getWinxinResByJson
(
url
,
jsonStr
,
null
,
b
,
request
,
response
);
}
}
public
static
Map
<
String
,
Object
>
getWinxinResByJson
(
String
url
,
String
jsonStr
,
Map
<
String
,
String
>
header
,
byte
[]
b
)
{
public
static
Map
<
String
,
Object
>
getWinxinResByJson
(
String
url
,
String
jsonStr
,
Map
<
String
,
String
>
header
,
byte
[]
b
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
long
begin
=
new
Date
().
getTime
();
long
begin
=
new
Date
().
getTime
();
String
resInfo
=
null
;
String
resInfo
=
null
;
...
@@ -118,15 +114,18 @@ public class HttpClient {
...
@@ -118,15 +114,18 @@ public class HttpClient {
}
}
}
}
doRequestHeader
(
post
,
request
);
try
{
try
{
if
(
null
!=
jsonStr
)
{
if
(
null
!=
jsonStr
)
{
post
.
setEntity
(
new
StringEntity
(
jsonStr
,
"utf-8"
));
post
.
setEntity
(
new
StringEntity
(
jsonStr
,
"utf-8"
));
}
}
HttpResponse
r
esponse
=
client
.
execute
(
post
);
HttpResponse
httpR
esponse
=
client
.
execute
(
post
);
resInfo
=
EntityUtils
.
toString
(
r
esponse
.
getEntity
(),
"utf-8"
);
resInfo
=
EntityUtils
.
toString
(
httpR
esponse
.
getEntity
(),
"utf-8"
);
weixinMap
=
JSON
.
parseObject
(
resInfo
,
Map
.
class
);
weixinMap
=
JSON
.
parseObject
(
resInfo
,
Map
.
class
);
doResponseHeader
(
httpResponse
,
response
);
}
catch
(
UnsupportedEncodingException
e
)
{
}
catch
(
UnsupportedEncodingException
e
)
{
// TODO Auto-generated catch block
// TODO Auto-generated catch block
e
.
printStackTrace
();
e
.
printStackTrace
();
...
@@ -143,7 +142,7 @@ public class HttpClient {
...
@@ -143,7 +142,7 @@ public class HttpClient {
return
weixinMap
;
return
weixinMap
;
}
}
public
static
Map
<
String
,
Object
>
getWinxinResByFile
(
String
url
,
Map
<
String
,
ContentBody
>
map
,
byte
[]
b
)
{
public
static
Map
<
String
,
Object
>
getWinxinResByFile
(
String
url
,
Map
<
String
,
ContentBody
>
map
,
byte
[]
b
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
long
begin
=
new
Date
().
getTime
();
long
begin
=
new
Date
().
getTime
();
String
entityStr
=
null
;
String
entityStr
=
null
;
...
@@ -160,12 +159,14 @@ public class HttpClient {
...
@@ -160,12 +159,14 @@ public class HttpClient {
HttpPost
post
=
new
HttpPost
(
url
);
HttpPost
post
=
new
HttpPost
(
url
);
StringBuilder
builder
=
new
StringBuilder
();
StringBuilder
builder
=
new
StringBuilder
();
doRequestHeader
(
post
,
request
);
try
{
try
{
post
.
setEntity
(
entity
);
post
.
setEntity
(
entity
);
HttpResponse
response
=
client
.
execute
(
post
);
HttpResponse
httpResponse
=
client
.
execute
(
post
);
entityStr
=
EntityUtils
.
toString
(
response
.
getEntity
(),
"utf-8"
);
entityStr
=
EntityUtils
.
toString
(
httpResponse
.
getEntity
(),
"utf-8"
);
obj
=
JSON
.
parseObject
(
entityStr
,
Map
.
class
);
obj
=
JSON
.
parseObject
(
entityStr
,
Map
.
class
);
doResponseHeader
(
httpResponse
,
response
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
// TODO Auto-generated catch block
// TODO Auto-generated catch block
e
.
printStackTrace
();
e
.
printStackTrace
();
...
@@ -177,7 +178,7 @@ public class HttpClient {
...
@@ -177,7 +178,7 @@ public class HttpClient {
return
obj
;
return
obj
;
}
}
public
static
Map
<
String
,
Object
>
getHttpByGet
(
String
url
,
String
userName
,
String
password
,
byte
[]
b
)
{
public
static
Map
<
String
,
Object
>
getHttpByGet
(
String
url
,
String
userName
,
String
password
,
byte
[]
b
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
org
.
apache
.
http
.
client
.
HttpClient
client
=
getHttpClient
();
org
.
apache
.
http
.
client
.
HttpClient
client
=
getHttpClient
();
setIp
(
client
,
b
)
;
setIp
(
client
,
b
)
;
...
@@ -189,18 +190,19 @@ public class HttpClient {
...
@@ -189,18 +190,19 @@ public class HttpClient {
}
}
HttpGet
get
=
new
HttpGet
(
url
);
HttpGet
get
=
new
HttpGet
(
url
);
get
.
setHeader
(
"Authorization"
,
"Basic YWRtaW46YWRtaW4="
);
get
.
setHeader
(
"Authorization"
,
"Basic YWRtaW46YWRtaW4="
);
HttpResponse
response
=
null
;
doRequestHeader
(
get
,
request
);
HttpResponse
httpResponse
=
null
;
try
{
try
{
r
esponse
=
client
.
execute
(
get
);
httpR
esponse
=
client
.
execute
(
get
);
map
=
doResponse
(
response
);
map
=
doResponse
(
httpResponse
,
response
);
}
catch
(
ClientProtocolException
e
)
{
}
catch
(
ClientProtocolException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
finally
{
}
finally
{
if
(
r
esponse
!=
null
)
{
if
(
httpR
esponse
!=
null
)
{
try
{
try
{
r
esponse
.
getEntity
().
getContent
().
close
();
httpR
esponse
.
getEntity
().
getContent
().
close
();
}
catch
(
IllegalStateException
|
IOException
e
)
{
}
catch
(
IllegalStateException
|
IOException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
...
@@ -210,11 +212,36 @@ public class HttpClient {
...
@@ -210,11 +212,36 @@ public class HttpClient {
}
}
public
static
Map
<
String
,
Object
>
getHttpByGet
(
String
url
,
byte
[]
b
)
{
public
static
Map
<
String
,
Object
>
getHttpByGet
(
String
url
,
byte
[]
b
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
return
getHttpByGet
(
url
,
null
,
null
,
b
);
return
getHttpByGet
(
url
,
null
,
null
,
b
,
request
,
response
);
}
}
private
static
Map
<
String
,
Object
>
doResponse
(
HttpResponse
response
)
{
private
static
void
doRequestHeader
(
HttpRequestBase
httpRequestBase
,
HttpServletRequest
request
)
{
// 获取所有请求头的名称列表
Enumeration
<
String
>
headerNames
=
request
.
getHeaderNames
();
// 遍历请求头名称列表
while
(
headerNames
!=
null
&&
headerNames
.
hasMoreElements
())
{
String
headerName
=
headerNames
.
nextElement
();
// 根据名称获取具体的请求头值
String
headerValue
=
request
.
getHeader
(
headerName
);
httpRequestBase
.
setHeader
(
headerName
,
headerValue
);
}
}
private
static
void
doResponseHeader
(
HttpResponse
httpResponse
,
HttpServletResponse
response
)
{
// 获取响应头
Header
[]
headers
=
httpResponse
.
getAllHeaders
();
// 将响应头信息添加到HttpServletResponse对象中
for
(
Header
header
:
headers
)
{
response
.
addHeader
(
header
.
getName
(),
header
.
getValue
());
}
}
private
static
Map
<
String
,
Object
>
doResponse
(
HttpResponse
httpResponse
,
HttpServletResponse
response
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
String
line
=
""
;
String
line
=
""
;
String
result
=
null
;
String
result
=
null
;
...
@@ -222,13 +249,15 @@ public class HttpClient {
...
@@ -222,13 +249,15 @@ public class HttpClient {
int
responseCode
=
0
;
int
responseCode
=
0
;
try
{
try
{
HttpEntity
entity
=
r
esponse
.
getEntity
();
HttpEntity
entity
=
httpR
esponse
.
getEntity
();
BufferedReader
reader
=
new
BufferedReader
(
new
InputStreamReader
(
entity
.
getContent
(),
"UTF-8"
),
8
*
1024
);
BufferedReader
reader
=
new
BufferedReader
(
new
InputStreamReader
(
entity
.
getContent
(),
"UTF-8"
),
8
*
1024
);
StringBuilder
builder
=
new
StringBuilder
();
StringBuilder
builder
=
new
StringBuilder
();
responseCode
=
response
.
getStatusLine
().
getStatusCode
();
responseCode
=
httpResponse
.
getStatusLine
().
getStatusCode
();
doResponseHeader
(
httpResponse
,
response
);
switch
(
responseCode
)
{
switch
(
responseCode
)
{
// 请求成功
// 请求成功
...
...
src/main/java/com/gic/qywx/self/QywxController.java
View file @
4cb23962
...
@@ -6,6 +6,7 @@ import java.util.List;
...
@@ -6,6 +6,7 @@ import java.util.List;
import
java.util.Map
;
import
java.util.Map
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.apache.http.entity.ContentType
;
import
org.apache.http.entity.ContentType
;
import
org.apache.http.entity.mime.content.ByteArrayBody
;
import
org.apache.http.entity.mime.content.ByteArrayBody
;
...
@@ -26,43 +27,43 @@ public class QywxController {
...
@@ -26,43 +27,43 @@ public class QywxController {
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
QywxController
.
class
);
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
QywxController
.
class
);
@RequestMapping
(
"self-post"
)
@RequestMapping
(
"self-post"
)
public
Object
selfPost
(
HttpServletRequest
request
,
String
url
,
String
json
,
String
ip
)
{
public
Object
selfPost
(
HttpServletRequest
request
,
HttpServletResponse
response
,
String
url
,
String
json
,
String
ip
)
{
String
traceid
=
request
.
getParameter
(
"tranceid"
)
;
String
traceid
=
request
.
getParameter
(
"tranceid"
)
;
logger
.
info
(
"自建post,url={},json={},{}"
,
url
,
json
,
traceid
);
logger
.
info
(
"自建post,url={},json={},{}"
,
url
,
json
,
traceid
);
Map
<
String
,
Object
>
map
=
HttpClient
.
getWinxinResByJson
(
url
,
json
,
getIp
(
ip
));
Map
<
String
,
Object
>
map
=
HttpClient
.
getWinxinResByJson
(
url
,
json
,
getIp
(
ip
)
,
request
,
response
);
return
map
;
return
map
;
}
}
@RequestMapping
(
"self-post-json"
)
@RequestMapping
(
"self-post-json"
)
public
Object
selfPostJson
(
HttpServletRequest
request
,
String
url
,
@RequestBody
String
json
,
String
ip
)
{
public
Object
selfPostJson
(
HttpServletRequest
request
,
HttpServletResponse
response
,
String
url
,
@RequestBody
String
json
,
String
ip
)
{
String
traceid
=
request
.
getParameter
(
"tranceid"
)
;
String
traceid
=
request
.
getParameter
(
"tranceid"
)
;
logger
.
info
(
"自建post json,url={},json={},{}"
,
url
,
json
,
traceid
);
logger
.
info
(
"自建post json,url={},json={},{}"
,
url
,
json
,
traceid
);
Map
<
String
,
Object
>
map
=
HttpClient
.
getWinxinResByJson
(
url
,
json
,
getIp
(
ip
));
Map
<
String
,
Object
>
map
=
HttpClient
.
getWinxinResByJson
(
url
,
json
,
getIp
(
ip
)
,
request
,
response
);
return
map
;
return
map
;
}
}
@RequestMapping
(
"self-get"
)
@RequestMapping
(
"self-get"
)
public
Object
selfGet
(
HttpServletRequest
request
,
String
url
,
String
ip
)
{
public
Object
selfGet
(
HttpServletRequest
request
,
HttpServletResponse
response
,
String
url
,
String
ip
)
{
String
traceid
=
request
.
getParameter
(
"tranceid"
)
;
String
traceid
=
request
.
getParameter
(
"tranceid"
)
;
logger
.
info
(
"自建get,url={},{}"
,
url
,
traceid
);
logger
.
info
(
"自建get,url={},{}"
,
url
,
traceid
);
Map
<
String
,
Object
>
map
=
HttpClient
.
getHttpByGet
(
url
,
getIp
(
ip
));
Map
<
String
,
Object
>
map
=
HttpClient
.
getHttpByGet
(
url
,
getIp
(
ip
)
,
request
,
response
);
return
map
;
return
map
;
}
}
@RequestMapping
(
"self-upload"
)
@RequestMapping
(
"self-upload"
)
public
Object
selfUpload
(
HttpServletRequest
request
,
String
url
,
String
fileUrl
,
String
fileName
,
String
ip
)
{
public
Object
selfUpload
(
HttpServletRequest
request
,
HttpServletResponse
response
,
String
url
,
String
fileUrl
,
String
fileName
,
String
ip
)
{
String
traceid
=
request
.
getParameter
(
"tranceid"
)
;
String
traceid
=
request
.
getParameter
(
"tranceid"
)
;
logger
.
info
(
"自建upload,url={},fileUrl={},{}"
,
url
,
fileUrl
,
traceid
);
logger
.
info
(
"自建upload,url={},fileUrl={},{}"
,
url
,
fileUrl
,
traceid
);
byte
[]
data
=
CommonUtil
.
getFileByte
(
fileUrl
);
byte
[]
data
=
CommonUtil
.
getFileByte
(
fileUrl
);
Map
<
String
,
ContentBody
>
paramsMap
=
new
HashMap
<
String
,
ContentBody
>();
Map
<
String
,
ContentBody
>
paramsMap
=
new
HashMap
<
String
,
ContentBody
>();
paramsMap
.
put
(
"media"
,
new
ByteArrayBody
(
data
,
ContentType
.
DEFAULT_BINARY
,
fileName
));
paramsMap
.
put
(
"media"
,
new
ByteArrayBody
(
data
,
ContentType
.
DEFAULT_BINARY
,
fileName
));
Map
<
String
,
Object
>
map
=
HttpClient
.
getWinxinResByFile
(
url
,
paramsMap
,
getIp
(
ip
));
Map
<
String
,
Object
>
map
=
HttpClient
.
getWinxinResByFile
(
url
,
paramsMap
,
getIp
(
ip
)
,
request
,
response
);
logger
.
info
(
"自建upload end={}"
,
traceid
);
logger
.
info
(
"自建upload end={}"
,
traceid
);
return
map
;
return
map
;
}
}
@RequestMapping
(
"self-upload-data"
)
@RequestMapping
(
"self-upload-data"
)
public
Object
selfImage
(
HttpServletRequest
request
,
String
url
,
String
fileName
,
String
ip
)
throws
IOException
{
public
Object
selfImage
(
HttpServletRequest
request
,
HttpServletResponse
response
,
String
url
,
String
fileName
,
String
ip
)
throws
IOException
{
String
traceid
=
request
.
getParameter
(
"tranceid"
)
;
String
traceid
=
request
.
getParameter
(
"tranceid"
)
;
logger
.
info
(
"自建upload-data,url={},{}"
,
url
,
traceid
);
logger
.
info
(
"自建upload-data,url={},{}"
,
url
,
traceid
);
MultipartHttpServletRequest
multiRequest
=
(
MultipartHttpServletRequest
)
request
;
MultipartHttpServletRequest
multiRequest
=
(
MultipartHttpServletRequest
)
request
;
...
@@ -71,7 +72,7 @@ public class QywxController {
...
@@ -71,7 +72,7 @@ public class QywxController {
byte
[]
data
=
mf
.
getBytes
();
byte
[]
data
=
mf
.
getBytes
();
Map
<
String
,
ContentBody
>
paramsMap
=
new
HashMap
<
String
,
ContentBody
>();
Map
<
String
,
ContentBody
>
paramsMap
=
new
HashMap
<
String
,
ContentBody
>();
paramsMap
.
put
(
"media"
,
new
ByteArrayBody
(
data
,
ContentType
.
DEFAULT_BINARY
,
fileName
));
paramsMap
.
put
(
"media"
,
new
ByteArrayBody
(
data
,
ContentType
.
DEFAULT_BINARY
,
fileName
));
Map
<
String
,
Object
>
map
=
HttpClient
.
getWinxinResByFile
(
url
,
paramsMap
,
getIp
(
ip
));
Map
<
String
,
Object
>
map
=
HttpClient
.
getWinxinResByFile
(
url
,
paramsMap
,
getIp
(
ip
)
,
request
,
response
);
logger
.
info
(
"自建upload-data end={}"
,
traceid
);
logger
.
info
(
"自建upload-data end={}"
,
traceid
);
return
map
;
return
map
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment