实现http请求-hutool
hutool工具HttpUtil
使用hutool就能实现http请求,官方案例
// 最简单的HTTP请求,可以自动通过header等信息判断编码,不区分HTTP和HTTPS
String result1= HttpUtil.get("https://www.baidu.com");// 当无法识别页面编码的时候,可以自定义请求页面的编码
String result2= HttpUtil.get("https://www.baidu.com", CharsetUtil.CHARSET_UTF_8);//可以单独传入http参数,这样参数会自动做URL编码,拼接在URL中
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("city", "北京");String result3= HttpUtil.get("https://www.baidu.com", paramMap);
我的场景:
get
需要Authorization和在地址栏上拼接上参数,比如http://aaa/bbb?ccc=3&ddd=1&eee=2
,其中参数ccc,ddd,eee为参数,是需要拼接在url=http://aaa/bbb上的,即参数传参为param,发现我按照这个String result3= HttpUtil.get("http://aaa/bbb", paramMap);
报异常说没有权限,因为没有带Authorization
。但是发现使用HttpUtil.get之后带不了Authorization,
但是通过HttpUtil.createGet
是可以的,但是得把http://aaa/bbb手动拼接上参数 urlExtend=http://aaa/bbb?ccc=3&ddd=1&eee=2
// 发送GET请求String response = HttpUtil.createGet(urlExtend).header("Authorization", token).execute().body();
一般场景:
json = HttpRequest.get(urlExtend).header("Authorization", token).timeout(25000).execute().body();
所以咱就是说?必须要把拼接好的url放进参数中请求?俺也不懂,
post
post请求方式一般是把参数放在post中
场景:使用form-data方式放在body中传参
【这个本身就有点奇怪,一般post直接使用json格式放在body中,这里使用form data格式放在body中,可能是因为参数少?】
同样url=http://aaa/bbb
String result = HttpRequest.post(url).header("Authorization", token).header("Content-Type", "multipart/form-data").form("file", file).form("aaa", 111).form("bbb",222).form("ccc", 333) .form("version", "MBL3.0").timeout(120000).execute().body();
一般场景:放在json中
String json = ...;
String result = HttpRequest.post(url).body(json).execute().body();
对json格式的一般处理:map转成json格式
HashMap<String, Object> map= new HashMap<>();
map.put("aaa", 111);
map.put("bbb", "222");
String result = HttpRequest.post(porUrl).body(JSONUtil.toJsonStr(map)).execute().body();