hutool/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java
2022-03-28 01:14:03 +08:00

184 lines
5.0 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package cn.hutool.http;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.lang.Console;
import cn.hutool.core.net.SSLProtocols;
import cn.hutool.core.util.CharsetUtil;
import org.junit.Ignore;
import org.junit.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* {@link HttpRequest}单元测试
*
* @author Looly
*/
public class HttpRequestTest {
final String url = "http://photo.qzone.qq.com/fcgi-bin/fcg_list_album?uin=88888&outstyle=2";
@Test
@Ignore
public void getHttpsTest() {
String body = HttpRequest.get("https://www.hutool.cn/").timeout(10).execute().body();
Console.log(body);
}
@Test
@Ignore
public void getHttpsThenTest() {
HttpRequest
.get("https://hutool.cn")
.then(response -> Console.log(response.body()));
}
@Test
@Ignore
public void getCookiesTest() {
// 检查在Connection关闭情况下Cookie是否可以正常获取
HttpResponse res = HttpRequest.get("https://www.oschina.net/").execute();
String body = res.body();
Console.log(res.getCookies());
Console.log(body);
}
@Test
@Ignore
public void toStringTest() {
String url = "http://gc.ditu.aliyun.com/geocoding?ccc=你好";
HttpRequest request = HttpRequest.get(url).body("a=乌海");
Console.log(request.toString());
}
@Test
@Ignore
public void asyncHeadTest() {
HttpResponse response = HttpRequest.head(url).execute();
Map<String, List<String>> headers = response.headers();
Console.log(headers);
Console.log(response.body());
}
@Test
@Ignore
public void asyncGetTest() {
TimeInterval timer = DateUtil.timer();
HttpResponse body = HttpRequest.get(url).charset("GBK").executeAsync();
long interval = timer.interval();
timer.restart();
Console.log(body.body());
long interval2 = timer.interval();
Console.log("Async response spend {}ms, body spend {}ms", interval, interval2);
}
@Test
@Ignore
public void syncGetTest() {
TimeInterval timer = DateUtil.timer();
HttpResponse body = HttpRequest.get(url).charset("GBK").execute();
long interval = timer.interval();
timer.restart();
Console.log(body.body());
long interval2 = timer.interval();
Console.log("Async response spend {}ms, body spend {}ms", interval, interval2);
}
@Test
@Ignore
public void customGetTest() {
// 自定义构建HTTP GET请求发送Http GET请求针对HTTPS安全加密可以自定义SSL
HttpRequest request = HttpRequest.get(url)
// 自定义返回编码
.charset(CharsetUtil.CHARSET_GBK)
// 禁用缓存
.disableCache()
// 自定义SSL版本
.setSSLProtocol(SSLProtocols.TLSv12);
Console.log(request.execute().body());
}
@Test
@Ignore
public void getDeflateTest() {
String res = HttpRequest.get("https://comment.bilibili.com/67573272.xml")
.execute().body();
Console.log(res);
}
@Test
@Ignore
public void bodyTest() {
String ddddd1 = HttpRequest.get("https://baijiahao.baidu.com/s").body("id=1625528941695652600").execute().body();
Console.log(ddddd1);
}
/**
* 测试GET请求附带body体是否会变更为POST
*/
@Test
@Ignore
public void getLocalTest() {
List<String> list = new ArrayList<>();
list.add("hhhhh");
list.add("sssss");
Map<String, Object> map = new HashMap<>(16);
map.put("recordId", "12321321");
map.put("page", "1");
map.put("size", "2");
map.put("sizes", list);
HttpRequest
.get("http://localhost:8888/get")
.form(map)
.then(resp -> Console.log(resp.body()));
}
@Test
@Ignore
public void getWithoutEncodeTest() {
String url = "https://img-cloud.voc.com.cn/140/2020/09/03/c3d41b93e0d32138574af8e8b50928b376ca5ba61599127028157.png?imageMogr2/auto-orient/thumbnail/500&pid=259848";
HttpRequest get = HttpUtil.createGet(url);
Console.log(get.getUrl());
HttpResponse execute = get.execute();
Console.log(execute.body());
}
@Test
@Ignore
public void followRedirectsTest() {
// 从5.7.19开始关闭JDK的自动重定向功能改为手动重定向
// 当有多层重定向时JDK的重定向会失效或者说只有最后一个重定向有效因此改为手动更易控制次数
// 此链接有两次重定向当设置次数为1时表示最多执行一次重定向即请求2次
String url = "http://api.rosysun.cn/sjtx/?type=2";
// String url = "https://api.btstu.cn/sjtx/api.php?lx=b1";
// 方式1全局设置
HttpGlobalConfig.setMaxRedirectCount(1);
HttpResponse execute = HttpRequest.get(url).execute();
Console.log(execute.getStatus(), execute.header(Header.LOCATION));
// 方式2单独设置
execute = HttpRequest.get(url).setMaxRedirectCount(1).execute();
Console.log(execute.getStatus(), execute.header(Header.LOCATION));
}
@Test
@Ignore
public void addInterceptorTest() {
HttpUtil.createGet("https://hutool.cn").addInterceptor(Console::log).execute();
}
@Test
@Ignore
public void addGlobalInterceptorTest() {
GlobalInterceptor.INSTANCE.addInterceptor(Console::log);
HttpUtil.createGet("https://hutool.cn").execute();
}
}