zoukankan      html  css  js  c++  java
  • RestTemplate 发送 get 请求使用误区 多个参数传值为null

    RestTemplate 发送 get 请求使用误区 多个参数传值为null(转载)

    首先看一下官方文档是怎么描述的,传递多个值的情况(注意例子中用到的@pathParam,一般要用@queryParam)

    RestTemplate 实例

    复制代码
    @Configuration
    public class RestConfiguration {
    
        @Bean
        @ConditionalOnMissingBean({RestOperations.class, RestTemplate.class})
        public RestOperations restOperations() {
            SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
            requestFactory.setReadTimeout(5000);
            requestFactory.setConnectTimeout(5000);
    
            RestTemplate restTemplate = new RestTemplate(requestFactory);
    
            // 使用 utf-8 编码集的 conver 替换默认的 conver(默认的 string conver 的编码集为 "ISO-8859-1")
            List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();
            Iterator<HttpMessageConverter<?>> iterator = messageConverters.iterator();
            while (iterator.hasNext()) {
                HttpMessageConverter<?> converter = iterator.next();
                if (converter instanceof StringHttpMessageConverter) {
                    iterator.remove();
                }
            }
            messageConverters.add(new StringHttpMessageConverter(Charset.forName("UTF-8")));
    
            return restTemplate;
        }
    
    }
    复制代码

    请求地址

    get 请求 url 为

    http://localhost:8080/test/sendSms?phone=手机号&msg=短信内容

    错误使用

    复制代码
    @Autowired
    private RestOperations restOperations;
    
    public void test() throws Exception{
        String url = "http://localhost:8080/test/sendSms";
    
        Map<String, Object> uriVariables = new HashMap<String, Object>();
        uriVariables.put("phone", "151xxxxxxxx");
        uriVariables.put("msg", "测试短信内容");
    
        String result = restOperations.getForObject(url, String.class, uriVariables);
    }
    复制代码

    服务器接收的时候你会发现,接收的该请求时没有参数的


    正确使用

    复制代码
    @Autowired
    private RestOperations restOperations;
    
    public void test() throws Exception{
        String url = "http://localhost:8080/test/sendSms?phone={phone}&msg={phone}";
    
        Map<String, Object> uriVariables = new HashMap<String, Object>();
        uriVariables.put("phone", "151xxxxxxxx");
        uriVariables.put("msg", "测试短信内容");
    
        String result = restOperations.getForObject(url, String.class, uriVariables);
    }
    复制代码

    等价于

    复制代码
    @Autowired
    private RestOperations restOperations;
    
    public void test() throws Exception{
        String url = "http://localhost:8080/test/sendSms?phone={phone}&msg={phone}";
    
        String result = restOperations.getForObject(url, String.class,  "151xxxxxxxx", "测试短信内容");
    }
    复制代码
  • 相关阅读:
    nopCommerce 2.60 之实现产品规格属性分组筛选
    chromedriver的使用
    linux 服务器发现了挖矿病毒
    C++day11 学习笔记
    C++day08 学习笔记
    C++day10 学习笔记
    C++day07 学习笔记
    C++day06 学习笔记
    C++day04 学习笔记
    C++day02 学习笔记
  • 原文地址:https://www.cnblogs.com/hejunnuo/p/10323603.html
Copyright © 2011-2022 走看看