美文网首页
使用RestTemplate发送GET请求时,获取不到参数?

使用RestTemplate发送GET请求时,获取不到参数?

作者: wyn_做自己 | 来源:发表于2021-11-23 11:24 被阅读0次

今日份鸡汤:一杯咖啡,一片饱含核桃仁、葡萄干的大列巴,美好的一天,从美味的早餐开始啦~

其实这个问题是某人昨天遇到的,昨天太晚了就没整理,今天来记录一下吧。

问题描述:
某人:我的test类,发请求,我的应用收不到参数,但是如果拼URL里或者postman就可以。

image.png image.png

问题分析:
既然postman和拼url的形式可以,那就一定是RestTemplate发送Get请求有什么特殊的要求,那就查一下吧,果然是有限制的:RestTemplate发送Get请求需要将请求Url用占位符。

问题解决:
将请求更改为这个样子就可以了呢:String url = "http://www.test.com/test/str?s={s}";

来吧,上demo,没有比这个更直观的了~
程序代码:

public class RestTemplateDemo{
    public static void main(String[] args) {
        /**
         * 使用HashMap封装参数方式
         */
        String url = "http://www.test.com/?Action=QueryUsers";
        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
        url = builder.queryParam("name", "Tom").build().encode().toString();
        System.out.println("url = " + url);//http://www.test.com?name=Tom

        Map<String,String> param = new HashMap<>();
        param.put("name","Jack");
        param.put("age","18");
        param.entrySet().stream().forEach(o -> builder.queryParam(o.getKey(),o.getValue()));
        url = builder.build().encode().toString();
        System.out.println("url = " + url);//http://www.test.com?name=Tom&name=Jack&age=18

        /**
         * 使用IdentityHashMap封装参数方式
         */
        String uri = "http://www.test.com/?Action=QueryUsers";
        Map<String, String> params = new IdentityHashMap<>();
        params.put(new String("name"),"Jack");
        params.put(new String("name"),"Tom");
        params.put("age","18");

        UriComponentsBuilder uBuilder = UriComponentsBuilder.fromHttpUrl(uri);
        params.entrySet().stream().forEach(o -> uBuilder.queryParam(o.getKey(),o.getValue()));

        uri = uBuilder.build().encode().toString();
        System.out.println("uri = " + uri);//http://www.test.com/?Action=QueryUsers&age=18&name=Jack&name=Tom

    }
}

运行结果:


image.png

这篇就到这吧,小demo还练习了一下昨天的内容,温故而知新,值~

相关文章

网友评论

      本文标题:使用RestTemplate发送GET请求时,获取不到参数?

      本文链接:https://www.haomeiwen.com/subject/umfwtrtx.html