zoukankan      html  css  js  c++  java
  • 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", "测试短信内容");
    }
  • 相关阅读:
    svn版本更新
    前端复选框的全选与获取数据
    关于博主的职业生涯历程
    Presto部署指南
    linux下简单好用的端口映射转发工具rinetd
    阿里云时间服务器
    mongodb常用操作
    mysql常用操作
    mysql内存分配问题
    zabbix微信发送消息脚本
  • 原文地址:https://www.cnblogs.com/myf008/p/8893729.html
Copyright © 2011-2022 走看看