@@ -20,7 +20,7 @@ public class HttpUtilTest {
@Ignore
public void postTest ( ) {
String result = HttpUtil . createPost ( " api.uhaozu.com/goods/description/1120448506 " )
. charset ( CharsetUtil . UTF_8 )
. charset ( CharsetUtil . NAME_ UTF_8)
. execute ( ) . body ( ) ;
Console . log ( result ) ;
}
@@ -40,7 +40,7 @@ public class HttpUtilTest {
@Test
@Ignore
public void getTest ( ) {
String result1 = HttpUtil . get ( " http://photo.qzone.qq.com/fcgi-bin/fcg_list_album?uin=88888&outstyle=2 " , CharsetUtil . CHARSET_ GBK) ;
String result1 = HttpUtil . get ( " http://photo.qzone.qq.com/fcgi-bin/fcg_list_album?uin=88888&outstyle=2 " , CharsetUtil . GBK ) ;
Console . log ( result1 ) ;
}
@@ -97,7 +97,7 @@ public class HttpUtilTest {
public void downloadStringTest ( ) {
String url = " https://www.baidu.com " ;
// 从远程直接读取字符串, 需要自定义编码, 直接调用JDK方法
String content2 = HttpUtil . downloadString ( url , CharsetUtil . UTF_8 ) ;
String content2 = HttpUtil . downloadString ( url , CharsetUtil . NAME_ UTF_8) ;
Console . log ( content2 ) ;
}
@@ -121,7 +121,7 @@ public class HttpUtilTest {
@Test
public void decodeParamsTest ( ) {
String paramsStr = " uuuu=0&a=b&c=%3F%23%40!%24%25%5E%26%3Ddsssss555555 " ;
Map < String , List < String > > map = HttpUtil . decodeParams ( paramsStr , CharsetUtil . UTF_8 ) ;
Map < String , List < String > > map = HttpUtil . decodeParams ( paramsStr , CharsetUtil . NAME_ UTF_8) ;
Assert . assertEquals ( " 0 " , map . get ( " uuuu " ) . get ( 0 ) ) ;
Assert . assertEquals ( " b " , map . get ( " a " ) . get ( 0 ) ) ;
Assert . assertEquals ( " ?#@!$%^&=dsssss555555 " , map . get ( " c " ) . get ( 0 ) ) ;
@@ -130,7 +130,7 @@ public class HttpUtilTest {
@Test
public void decodeParamMapTest ( ) {
// 参数值存在分界标记等号时
Map < String , String > paramMap = HttpUtil . decodeParamMap ( " https://www.xxx.com/api.action?aa=123&f_token=NzBkMjQxNDM1MDVlMDliZTk1OTU3ZDI1OTI0NTBiOWQ= " , CharsetUtil . CHARSET_ UTF_8) ;
Map < String , String > paramMap = HttpUtil . decodeParamMap ( " https://www.xxx.com/api.action?aa=123&f_token=NzBkMjQxNDM1MDVlMDliZTk1OTU3ZDI1OTI0NTBiOWQ= " , CharsetUtil . UTF_8 ) ;
Assert . assertEquals ( " 123 " , paramMap . get ( " aa " ) ) ;
Assert . assertEquals ( " NzBkMjQxNDM1MDVlMDliZTk1OTU3ZDI1OTI0NTBiOWQ= " , paramMap . get ( " f_token " ) ) ;
}
@@ -138,7 +138,7 @@ public class HttpUtilTest {
@Test
public void toParamsTest ( ) {
String paramsStr = " uuuu=0&a=b&c=3Ddsssss555555 " ;
Map < String , List < String > > map = HttpUtil . decodeParams ( paramsStr , CharsetUtil . UTF_8 ) ;
Map < String , List < String > > map = HttpUtil . decodeParams ( paramsStr , CharsetUtil . NAME_ UTF_8) ;
String encodedParams = HttpUtil . toParams ( map ) ;
Assert . assertEquals ( paramsStr , encodedParams ) ;
@@ -148,52 +148,52 @@ public class HttpUtilTest {
public void encodeParamTest ( ) {
// ?单独存在去除之,&单位位于末尾去除之
String paramsStr = " ?a=b&c=d& " ;
String encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . CHARSET_ UTF_8) ;
String encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . UTF_8 ) ;
Assert . assertEquals ( " a=b&c=d " , encode ) ;
// url不参与转码
paramsStr = " http://www.abc.dd?a=b&c=d& " ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . CHARSET_ UTF_8) ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . UTF_8 ) ;
Assert . assertEquals ( " http://www.abc.dd?a=b&c=d " , encode ) ;
// b=b中的=被当作值的一部分, 不做encode
paramsStr = " a=b=b&c=d& " ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . CHARSET_ UTF_8) ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . UTF_8 ) ;
Assert . assertEquals ( " a=b=b&c=d " , encode ) ;
// =d的情况被处理为key为空
paramsStr = " a=bbb&c=d&=d " ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . CHARSET_ UTF_8) ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . UTF_8 ) ;
Assert . assertEquals ( " a=bbb&c=d&=d " , encode ) ;
// d=的情况被处理为value为空
paramsStr = " a=bbb&c=d&d= " ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . CHARSET_ UTF_8) ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . UTF_8 ) ;
Assert . assertEquals ( " a=bbb&c=d&d= " , encode ) ;
// 多个&&被处理为单个,相当于空条件
paramsStr = " a=bbb&c=d&&&d= " ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . CHARSET_ UTF_8) ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . UTF_8 ) ;
Assert . assertEquals ( " a=bbb&c=d&d= " , encode ) ;
// &d&相当于只有键,无值得情况
paramsStr = " a=bbb&c=d&d& " ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . CHARSET_ UTF_8) ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . UTF_8 ) ;
Assert . assertEquals ( " a=bbb&c=d&d= " , encode ) ;
// 中文的键和值被编码
paramsStr = " a=bbb&c=你好&哈喽& " ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . CHARSET_ UTF_8) ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . UTF_8 ) ;
Assert . assertEquals ( " a=bbb&c=%E4%BD%A0%E5%A5%BD&%E5%93%88%E5%96%BD= " , encode ) ;
// URL原样输出
paramsStr = " https://www.hutool.cn/ " ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . CHARSET_ UTF_8) ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . UTF_8 ) ;
Assert . assertEquals ( paramsStr , encode ) ;
// URL原样输出
paramsStr = " https://www.hutool.cn/? " ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . CHARSET_ UTF_8) ;
encode = HttpUtil . encodeParams ( paramsStr , CharsetUtil . UTF_8 ) ;
Assert . assertEquals ( " https://www.hutool.cn/ " , encode ) ;
}
@@ -201,41 +201,41 @@ public class HttpUtilTest {
public void decodeParamTest ( ) {
// 开头的?被去除
String a = " ?a=b&c=d& " ;
Map < String , List < String > > map = HttpUtil . decodeParams ( a , CharsetUtil . UTF_8 ) ;
Map < String , List < String > > map = HttpUtil . decodeParams ( a , CharsetUtil . NAME_ UTF_8) ;
Assert . assertEquals ( " b " , map . get ( " a " ) . get ( 0 ) ) ;
Assert . assertEquals ( " d " , map . get ( " c " ) . get ( 0 ) ) ;
// =e被当作空为key, e为value
a = " ?a=b&c=d&=e " ;
map = HttpUtil . decodeParams ( a , CharsetUtil . UTF_8 ) ;
map = HttpUtil . decodeParams ( a , CharsetUtil . NAME_ UTF_8) ;
Assert . assertEquals ( " b " , map . get ( " a " ) . get ( 0 ) ) ;
Assert . assertEquals ( " d " , map . get ( " c " ) . get ( 0 ) ) ;
Assert . assertEquals ( " e " , map . get ( " " ) . get ( 0 ) ) ;
// 多余的&去除
a = " ?a=b&c=d&=e&&&& " ;
map = HttpUtil . decodeParams ( a , CharsetUtil . UTF_8 ) ;
map = HttpUtil . decodeParams ( a , CharsetUtil . NAME_ UTF_8) ;
Assert . assertEquals ( " b " , map . get ( " a " ) . get ( 0 ) ) ;
Assert . assertEquals ( " d " , map . get ( " c " ) . get ( 0 ) ) ;
Assert . assertEquals ( " e " , map . get ( " " ) . get ( 0 ) ) ;
// 值为空
a = " ?a=b&c=d&e= " ;
map = HttpUtil . decodeParams ( a , CharsetUtil . UTF_8 ) ;
map = HttpUtil . decodeParams ( a , CharsetUtil . NAME_ UTF_8) ;
Assert . assertEquals ( " b " , map . get ( " a " ) . get ( 0 ) ) ;
Assert . assertEquals ( " d " , map . get ( " c " ) . get ( 0 ) ) ;
Assert . assertEquals ( " " , map . get ( " e " ) . get ( 0 ) ) ;
// &=被作为键和值都为空
a = " a=b&c=d&= " ;
map = HttpUtil . decodeParams ( a , CharsetUtil . UTF_8 ) ;
map = HttpUtil . decodeParams ( a , CharsetUtil . NAME_ UTF_8) ;
Assert . assertEquals ( " b " , map . get ( " a " ) . get ( 0 ) ) ;
Assert . assertEquals ( " d " , map . get ( " c " ) . get ( 0 ) ) ;
Assert . assertEquals ( " " , map . get ( " " ) . get ( 0 ) ) ;
// &e&这类单独的字符串被当作key
a = " a=b&c=d&e& " ;
map = HttpUtil . decodeParams ( a , CharsetUtil . UTF_8 ) ;
map = HttpUtil . decodeParams ( a , CharsetUtil . NAME_ UTF_8) ;
Assert . assertEquals ( " b " , map . get ( " a " ) . get ( 0 ) ) ;
Assert . assertEquals ( " d " , map . get ( " c " ) . get ( 0 ) ) ;
Assert . assertNull ( map . get ( " e " ) . get ( 0 ) ) ;
@@ -243,7 +243,7 @@ public class HttpUtilTest {
// 被编码的键和值被还原
a = " a=bbb&c=%E4%BD%A0%E5%A5%BD&%E5%93%88%E5%96%BD= " ;
map = HttpUtil . decodeParams ( a , CharsetUtil . UTF_8 ) ;
map = HttpUtil . decodeParams ( a , CharsetUtil . NAME_ UTF_8) ;
Assert . assertEquals ( " bbb " , map . get ( " a " ) . get ( 0 ) ) ;
Assert . assertEquals ( " 你好 " , map . get ( " c " ) . get ( 0 ) ) ;
Assert . assertEquals ( " " , map . get ( " 哈喽 " ) . get ( 0 ) ) ;
@@ -270,12 +270,12 @@ public class HttpUtilTest {
param . put ( " Timestamp " , 123432453 ) ;
param . put ( " Version " , " 1.0 " ) ;
String urlWithForm = HttpUtil . urlWithForm ( " http://api.hutool.cn/login?type=aaa " , param , CharsetUtil . CHARSET_ UTF_8, false ) ;
String urlWithForm = HttpUtil . urlWithForm ( " http://api.hutool.cn/login?type=aaa " , param , CharsetUtil . UTF_8 , false ) ;
Assert . assertEquals (
" http://api.hutool.cn/login?type=aaa&AccessKeyId=123&Action=DescribeDomainRecords&Format=date&DomainName=lesper.cn&SignatureMethod=POST&SignatureNonce=123&SignatureVersion=4.3.1&Timestamp=123432453&Version=1.0 " ,
urlWithForm ) ;
urlWithForm = HttpUtil . urlWithForm ( " http://api.hutool.cn/login?type=aaa " , param , CharsetUtil . CHARSET_ UTF_8, false ) ;
urlWithForm = HttpUtil . urlWithForm ( " http://api.hutool.cn/login?type=aaa " , param , CharsetUtil . UTF_8 , false ) ;
Assert . assertEquals (
" http://api.hutool.cn/login?type=aaa&AccessKeyId=123&Action=DescribeDomainRecords&Format=date&DomainName=lesper.cn&SignatureMethod=POST&SignatureNonce=123&SignatureVersion=4.3.1&Timestamp=123432453&Version=1.0 " ,
urlWithForm ) ;
@@ -298,13 +298,13 @@ public class HttpUtilTest {
@Test
public void normalizeParamsTest ( ) {
String encodeResult = HttpUtil . normalizeParams ( " 参数 " , CharsetUtil . CHARSET_ UTF_8) ;
String encodeResult = HttpUtil . normalizeParams ( " 参数 " , CharsetUtil . UTF_8 ) ;
Assert . assertEquals ( " %E5%8F%82%E6%95%B0 " , encodeResult ) ;
}
@Test
public void normalizeBlankParamsTest ( ) {
String encodeResult = HttpUtil . normalizeParams ( " " , CharsetUtil . CHARSET_ UTF_8) ;
String encodeResult = HttpUtil . normalizeParams ( " " , CharsetUtil . UTF_8 ) ;
Assert . assertEquals ( " " , encodeResult ) ;
}