Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
I
im-common
Project
Project
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
陈永峰
im-common
Commits
067b475b
Commit
067b475b
authored
Jul 28, 2021
by
yanglbme
Committed by
Yang Libin
Jul 28, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(util): add Http tool
parent
7c4957b8
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
342 additions
and
1 deletion
+342
-1
Base64Util.java
src/main/java/com/qcloud/im/util/Base64Util.java
+2
-0
HttpUtil.java
src/main/java/com/qcloud/im/util/HttpUtil.java
+337
-0
JsonUtil.java
src/main/java/com/qcloud/im/util/JsonUtil.java
+1
-1
SigUtil.java
src/main/java/com/qcloud/im/util/SigUtil.java
+2
-0
No files found.
src/main/java/com/qcloud/im/util/Base64Util.java
View file @
067b475b
...
@@ -3,6 +3,8 @@ package com.qcloud.im.util;
...
@@ -3,6 +3,8 @@ package com.qcloud.im.util;
import
java.util.Base64
;
import
java.util.Base64
;
/**
/**
* Base64 tool
*
* @author bingo
* @author bingo
* @since 2021/7/26 16:43
* @since 2021/7/26 16:43
*/
*/
...
...
src/main/java/com/qcloud/im/util/HttpUtil.java
0 → 100644
View file @
067b475b
package
com
.
qcloud
.
im
.
util
;
import
java.io.*
;
import
java.net.HttpURLConnection
;
import
java.net.URL
;
import
java.net.URLDecoder
;
import
java.net.URLEncoder
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* Http tool
*
* @author bingo
* @since 2021/7/28 14:55
*/
public
class
HttpUtil
{
/**
* Send a get request
*
* @param url
* @return response
* @throws IOException
*/
public
static
String
get
(
String
url
)
throws
IOException
{
return
get
(
url
,
null
);
}
/**
* Send a get request
*
* @param url Url as string
* @param headers Optional map with headers
* @return response Response as string
* @throws IOException
*/
public
static
String
get
(
String
url
,
Map
<
String
,
String
>
headers
)
throws
IOException
{
return
fetch
(
"GET"
,
url
,
null
,
headers
);
}
/**
* Send a post request
*
* @param url Url as string
* @param body Request body as string
* @param headers Optional map with headers
* @return response Response as string
* @throws IOException
*/
public
static
String
post
(
String
url
,
String
body
,
Map
<
String
,
String
>
headers
)
throws
IOException
{
return
fetch
(
"POST"
,
url
,
body
,
headers
);
}
/**
* Send a post request
*
* @param url Url as string
* @param body Request body as string
* @return response Response as string
* @throws IOException
*/
public
static
String
post
(
String
url
,
String
body
)
throws
IOException
{
return
post
(
url
,
body
,
null
);
}
/**
* Post a json string
*
* @param url Url as string
* @param jsonStr a json string
* @return response Response as string
* @throws IOException
*/
public
static
String
postJson
(
String
url
,
String
jsonStr
)
throws
IOException
{
Map
<
String
,
String
>
headers
=
new
HashMap
<>();
headers
.
put
(
"Content-Type"
,
"application/json;charset=UTF-8"
);
return
post
(
url
,
jsonStr
,
headers
);
}
/**
* Post a form with parameters
*
* @param url Url as string
* @param params map with parameters/values
* @return response Response as string
* @throws IOException
*/
public
static
String
postForm
(
String
url
,
Map
<
String
,
String
>
params
)
throws
IOException
{
return
postForm
(
url
,
params
,
null
);
}
/**
* Post a form with parameters
*
* @param url Url as string
* @param params Map with parameters/values
* @param headers Optional map with headers
* @return response Response as string
* @throws IOException
*/
public
static
String
postForm
(
String
url
,
Map
<
String
,
String
>
params
,
Map
<
String
,
String
>
headers
)
throws
IOException
{
// set content type
if
(
headers
==
null
)
{
headers
=
new
HashMap
<
String
,
String
>();
}
headers
.
put
(
"Content-Type"
,
"application/x-www-form-urlencoded"
);
// parse parameters
String
body
=
""
;
if
(
params
!=
null
)
{
boolean
first
=
true
;
for
(
String
param
:
params
.
keySet
())
{
if
(
first
)
{
first
=
false
;
}
else
{
body
+=
"&"
;
}
String
value
=
params
.
get
(
param
);
body
+=
URLEncoder
.
encode
(
param
,
"UTF-8"
)
+
"="
;
body
+=
URLEncoder
.
encode
(
value
,
"UTF-8"
);
}
}
return
post
(
url
,
body
,
headers
);
}
/**
* Send a put request
*
* @param url Url as string
* @param body Request body as string
* @param headers Optional map with headers
* @return response Response as string
* @throws IOException
*/
public
static
String
put
(
String
url
,
String
body
,
Map
<
String
,
String
>
headers
)
throws
IOException
{
return
fetch
(
"PUT"
,
url
,
body
,
headers
);
}
/**
* Send a put request
*
* @param url Url as string
* @return response Response as string
* @throws IOException
*/
public
static
String
put
(
String
url
,
String
body
)
throws
IOException
{
return
put
(
url
,
body
,
null
);
}
/**
* Send a delete request
*
* @param url Url as string
* @param headers Optional map with headers
* @return response Response as string
* @throws IOException
*/
public
static
String
delete
(
String
url
,
Map
<
String
,
String
>
headers
)
throws
IOException
{
return
fetch
(
"DELETE"
,
url
,
null
,
headers
);
}
/**
* Send a delete request
*
* @param url Url as string
* @return response Response as string
* @throws IOException
*/
public
static
String
delete
(
String
url
)
throws
IOException
{
return
delete
(
url
,
null
);
}
/**
* Append query parameters to given url
*
* @param url Url as string
* @param params Map with query parameters
* @return url Url with query parameters appended
* @throws IOException
*/
public
static
String
appendQueryParams
(
String
url
,
Map
<
String
,
String
>
params
)
throws
IOException
{
String
fullUrl
=
url
;
if
(
params
!=
null
)
{
boolean
first
=
(
fullUrl
.
indexOf
(
'?'
)
==
-
1
);
for
(
String
param
:
params
.
keySet
())
{
if
(
first
)
{
fullUrl
+=
'?'
;
first
=
false
;
}
else
{
fullUrl
+=
'&'
;
}
String
value
=
params
.
get
(
param
);
fullUrl
+=
URLEncoder
.
encode
(
param
,
"UTF-8"
)
+
'='
;
fullUrl
+=
URLEncoder
.
encode
(
value
,
"UTF-8"
);
}
}
return
fullUrl
;
}
/**
* Retrieve the query parameters from given url
*
* @param url Url containing query parameters
* @return params Map with query parameters
* @throws IOException
*/
public
static
Map
<
String
,
String
>
getQueryParams
(
String
url
)
throws
IOException
{
Map
<
String
,
String
>
params
=
new
HashMap
<
String
,
String
>();
int
start
=
url
.
indexOf
(
'?'
);
while
(
start
!=
-
1
)
{
// read parameter name
int
equals
=
url
.
indexOf
(
'='
,
start
);
String
param
=
""
;
if
(
equals
!=
-
1
)
{
param
=
url
.
substring
(
start
+
1
,
equals
);
}
else
{
param
=
url
.
substring
(
start
+
1
);
}
// read parameter value
String
value
=
""
;
if
(
equals
!=
-
1
)
{
start
=
url
.
indexOf
(
'&'
,
equals
);
if
(
start
!=
-
1
)
{
value
=
url
.
substring
(
equals
+
1
,
start
);
}
else
{
value
=
url
.
substring
(
equals
+
1
);
}
}
params
.
put
(
URLDecoder
.
decode
(
param
,
"UTF-8"
),
URLDecoder
.
decode
(
value
,
"UTF-8"
));
}
return
params
;
}
/**
* Returns the url without query parameters
*
* @param url Url containing query parameters
* @return url Url without query parameters
* @throws IOException
*/
public
static
String
removeQueryParams
(
String
url
)
throws
IOException
{
int
q
=
url
.
indexOf
(
'?'
);
if
(
q
!=
-
1
)
{
return
url
.
substring
(
0
,
q
);
}
else
{
return
url
;
}
}
/**
* Send a request
*
* @param method HTTP method, for example "GET" or "POST"
* @param url Url as string
* @param body Request body as string
* @param headers Optional map with headers
* @return response Response as string
* @throws IOException
*/
public
static
String
fetch
(
String
method
,
String
url
,
String
body
,
Map
<
String
,
String
>
headers
)
throws
IOException
{
// connection
URL
u
=
new
URL
(
url
);
HttpURLConnection
conn
=
(
HttpURLConnection
)
u
.
openConnection
();
conn
.
setConnectTimeout
(
120000
);
conn
.
setReadTimeout
(
120000
);
// method
if
(
method
!=
null
)
{
conn
.
setRequestMethod
(
method
);
}
// headers
if
(
headers
!=
null
)
{
for
(
String
key
:
headers
.
keySet
())
{
conn
.
addRequestProperty
(
key
,
headers
.
get
(
key
));
}
}
// body
if
(
body
!=
null
)
{
conn
.
setDoOutput
(
true
);
OutputStream
os
=
conn
.
getOutputStream
();
os
.
write
(
body
.
getBytes
());
os
.
flush
();
os
.
close
();
}
// response
InputStream
is
=
conn
.
getInputStream
();
String
response
=
streamToString
(
is
);
// handle redirects
if
(
conn
.
getResponseCode
()
==
301
)
{
String
location
=
conn
.
getHeaderField
(
"Location"
);
return
fetch
(
method
,
location
,
body
,
headers
);
}
return
response
;
}
/**
* Read an input stream from conn into a string
*
* @param in
* @return
* @throws IOException
*/
public
static
String
streamToString
(
InputStream
in
)
throws
IOException
{
InputStreamReader
isr
=
new
InputStreamReader
(
in
,
"UTF-8"
);
BufferedReader
br
=
new
BufferedReader
(
isr
);
String
data
;
StringBuilder
out
=
new
StringBuilder
();
while
((
data
=
br
.
readLine
())
!=
null
)
{
out
.
append
(
data
);
}
br
.
close
();
return
out
.
toString
();
}
}
src/main/java/com/qcloud/im/util/JsonUtil.java
View file @
067b475b
...
@@ -11,7 +11,7 @@ import org.apache.commons.lang3.SerializationException;
...
@@ -11,7 +11,7 @@ import org.apache.commons.lang3.SerializationException;
import
java.io.IOException
;
import
java.io.IOException
;
/**
/**
* JSON
工具类
* JSON
tool
*
*
* @author bingo
* @author bingo
* @since 2021/7/27 17:41
* @since 2021/7/27 17:41
...
...
src/main/java/com/qcloud/im/util/SigUtil.java
View file @
067b475b
...
@@ -12,6 +12,8 @@ import java.util.Base64;
...
@@ -12,6 +12,8 @@ import java.util.Base64;
import
java.util.zip.Deflater
;
import
java.util.zip.Deflater
;
/**
/**
* Signature tool
*
* @author bingo
* @author bingo
* @since 2021/7/26 16:39
* @since 2021/7/26 16:39
*/
*/
...
...
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