实现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();

你可能感兴趣的:(java,http)