栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

RestTemplate 防坑指南

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RestTemplate 防坑指南

401 nobody

请求体编码需要要对应的消息体转换器

    private List> getConverts() {
        List> messageConverters = new ArrayList<>();
        // String转换器
        StringHttpMessageConverter stringConvert = new StringHttpMessageConverter();
        List stringMediaTypes = new ArrayList() {{
            //添加响应数据格式,不匹配会报401
            add(MediaType.TEXT_PLAIN);
            add(MediaType.TEXT_HTML);
            add(MediaType.APPLICATION_JSON);
        }};
        stringConvert.setSupportedMediaTypes(stringMediaTypes);
        messageConverters.add(stringConvert);
        return messageConverters;
    }
表单请求

restTemplate 的表单请求必须使用MultiValueMap提交参数

        MultiValueMap map = new linkedMultiValueMap<>();
        map.add("key","value");
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
        HttpEntity> param = new 		HttpEntity<>(map, headers);
JSON 请求

请求会把请求体转成 json格式,安装需要的json格式定义实体即可。

        //请求参数
        Map map = new HashMap<>();
        map.put("username", LOGIN_USER_NAME);
        map.put("password", LOGIN_PWD);
        //请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        //构造请求体
        HttpEntity> param = new HttpEntity<>(map, headers);
        //构造回应体
        ParameterizedTypeReference> typeRef =
                new ParameterizedTypeReference>() {
                };
        IotR responseData = restTemplate.exchange(LOGIN_URL, HttpMethod.POST, param, typeRef).getBody();
url参数请求

参数需要在url中使用占位符,把参数封装在Map中传递给Map uriVariables 编码,不然会有奇怪的问题出现。

        //构造请求
        HashMap map = new HashMap<>();
        map.put("customName",customName);
        map.put("everyDay",everyDay);
        ParameterizedTypeReference> typeRef = new ParameterizedTypeReference>() {};
        String url = AIR_DATA_BATCH_URL
                + "?customName={customName}"
                + "&everyDay={everyDay}";
        ResponseEntity> forEntity = restTemplate.exchange(url, HttpMethod.GET, null, typeRef,map);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769438.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号