iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >RestTemplate怎么实现发送带headers的GET请求
  • 754
分享到

RestTemplate怎么实现发送带headers的GET请求

2023-06-25 11:06:17 754人浏览 薄情痞子
摘要

这篇文章主要讲解了“RestTemplate怎么实现发送带headers的GET请求”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“RestTemplate怎么实现发送带headers的GET

这篇文章主要讲解了“RestTemplate怎么实现发送带headers的GET请求”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“RestTemplate怎么实现发送带headers的GET请求”吧!

RestTemplate 发送带headers的GET请求

需求:发送自定义header的GET请求,header中需要插入一个签名。

发送自定义header的POST请求

之前写过一个类似的请求,但是是POST的。这个也摸了一段时间,自己看参数整了出来。代码如下:

// header填充LinkedMultiValueMap<String, String> headers = new LinkedMultiValueMap<>();headers.put("Content-Type", Collections.singletonList("application/JSON;charset=UTF-8"));headers.put("signature", Collections.singletonList(makeSignature(fORM.getNewMobile())));// body填充jsONObject json = new JSONObject();json.put("oldMobile", mobile);json.put("newMobile", form.getNewMobile());HttpEntity<String> request = new HttpEntity<String>(json.toString(), headers);// 一个单例的restTemplateRestTemplate restTemplate = HttpInvoker.getRestTemplate();// 发送请求ResponseEntity<String> response = restTemplate.postForEntity(whiteListURL, request, String.class);

很简单的想着,只需要把上面的postForEntity()改成get的就行,但不是这样的。

Update: 2019/12/11

从链接学到了一种比较友好的写法:

private static void getEmployees(){    final String uri = "http://localhost:8080/springrestexample/employees";    RestTemplate restTemplate = new RestTemplate();    HttpHeaders headers = new HttpHeaders();    headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));    HttpEntity<String> entity = new HttpEntity<String>("parameters", headers);         ResponseEntity<String> result = restTemplate.exchange(uri, HttpMethod.GET, entity, String.class);         System.out.println(result);}

粗略看了看postForEntity()和getForEntity()这两个方法的实现,都是准备参数,然后调用execute()方法,如下:

// POST@Overridepublic <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request,Class<T> responseType, Object... uriVariables) throws RestClientException {RequestCallback requestCallback = httpEntityCallback(request, responseType);ResponseExtractor<ResponseEntity<T>> responseExtractor = responseEntityExtractor(responseType);return nonNull(execute(url, HttpMethod.POST, requestCallback, responseExtractor, uriVariables));}// GET@Override@Nullablepublic <T> T getForObject(String url, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {RequestCallback requestCallback = acceptHeaderRequestCallback(responseType);HttpMessageConverterExtractor<T> responseExtractor =new HttpMessageConverterExtractor<>(responseType, getMessageConverters(), logger);return execute(url, HttpMethod.GET, requestCallback, responseExtractor, uriVariables);}

区别就在于RequestCallback实例化的时候,传的参数不一样。POST的时候,是将header做为参数传给了RequestCallback。再然后就是execute()中的GET和POST参数不一样。到这个时候,发送自定义header的GET请求,已经很明显了。

实例化的函数,都是public的

如果不是public的,或者说我们不能直接访问到,还可以考虑通过反射的方式去调用相关的方法,但这里不需要用反射了。

结果

// header填充LinkedMultiValueMap<String, String> headers = new LinkedMultiValueMap<>();headers.put("Content-Type", Collections.singletonList("application/json;charset=UTF-8"));headers.put("signature", Collections.singletonList(makeSignature(mobile)));// 获取单例RestTemplateRestTemplate restTemplate = HttpInvoker.getRestTemplate();HttpEntity request = new HttpEntity(headers);// 构造execute()执行所需要的参数。RequestCallback requestCallback = restTemplate.httpEntityCallback(request, JSONObject.class);ResponseExtractor<ResponseEntity<JSONObject>> responseExtractor = restTemplate.responseEntityExtractor(JSONObject.class);// 执行execute(),发送请求ResponseEntity<JSONObject> response = restTemplate.execute(apiAddress + "/xxx/whitelist/check?phone=" + mobile, HttpMethod.GET, requestCallback, responseExtractor);

虽然很简单,但是看似不可能,自己却做到了、完成了,就很有成就感。

RestTemplate优雅的发送Get请求

在我们的项目中,如果借助RestTemplate发送带参数的Get请求,我们可以通过拼接字符串的方式将url拼接出来,比如下面这种方式:

String url = "http://127.0.0.1:8080/rest/get?name="+ name +"&id=" + id;ResponseEntity<RestVO> forEntity = restTemplate.getForEntity(url, RestVO.class);

然而这种方式不太优雅,我们还可以通过以下几种方式发送Get请求

方式1:使用占位符

String url = "http://127.0.0.1:8080/rest/path/{name}/{id}";Map<String, Object> params = new HashMap<>();params.put("name", "这是name");params.put("id", 1L);ResponseEntity<RestVO> forEntity = restTemplate.getForEntity(url, RestVO.class, params);

Map的key要和url中的占位符一致

方式2:使用LinkedMultiValueMap和UriComponentsBuilder

String url = "http://127.0.0.1:8080/rest/get";MultiValueMap<String, String> params = new LinkedMultiValueMap<>();params.add("name", "这是name");params.add("id", "1");UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);URI uri = builder.queryParams(params).build().encode().toUri(); ResponseEntity<RestVO> forEntity = restTemplate.getForEntity(uri, RestVO.class);return forEntity.getBody();

方式2看起来是最优雅的,将参数的设置和url分离。

感谢各位的阅读,以上就是“RestTemplate怎么实现发送带headers的GET请求”的内容了,经过本文的学习后,相信大家对RestTemplate怎么实现发送带headers的GET请求这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: RestTemplate怎么实现发送带headers的GET请求

本文链接: https://www.lsjlt.com/news/304398.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • RestTemplate实现发送带headers的GET请求
    目录RestTemplate 发送带headers的GET请求发送自定义header的POST请求发送自定义header的GET请求结果RestTemplate优雅的发送Get请求方...
    99+
    2024-04-02
  • RestTemplate怎么实现发送带headers的GET请求
    这篇文章主要讲解了“RestTemplate怎么实现发送带headers的GET请求”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“RestTemplate怎么实现发送带headers的GET...
    99+
    2023-06-25
  • RestTemplate GET请求怎么用
    这篇文章给大家分享的是有关RestTemplate GET请求怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、 getForObject() 方法1.1.以String的方式接受请求结果数据在S...
    99+
    2023-06-29
  • spring boot RestTemplate 发送get请求的踩坑及解决
    spring boot RestTemplate 发送get请求踩坑 闲话少说,代码说话 RestTemplate 实例 手动实例化,这个我基本不用 RestTemplate r...
    99+
    2024-04-02
  • RestTemplate发送HTTP GET请求使用方法详解
    目录前言一、getForObject()方法1.1.以String的方式接受请求结果数据1.2.以POJO对象的方式接受结果数据1.3.以数组的方式接收请求结果1.4.使用占位符号传...
    99+
    2024-04-02
  • C#发送Get、Post请求(带参数)
    目录Get请求Post请求Get请求 1.简单发送Get请求 /// <summary> /// 指定Url地址使用Get 方式获取全部字符串 /// </su...
    99+
    2024-04-02
  • HttpClient怎么发送Get请求
    HttpClient可以以多种方式发送GET请求,以下是其中的一种示例代码:```javaimport org.apache.htt...
    99+
    2023-08-24
    HttpClient Get
  • linux中怎么发送get请求
    在Linux系统中,您可以使用curl命令来发送GET请求。下面是一个示例: curl -X GET http://example....
    99+
    2024-03-02
    linux
  • Python中怎么发送Get请求
    这篇文章将为大家详细讲解有关Python中怎么发送Get请求,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、Python 命名规范是英文字符、下划线__、数字三个组成。项目(工程)名称、文...
    99+
    2023-06-15
  • SpringMVC中怎么发送GET、POST请求
    SpringMVC中怎么发送GET、POST请求,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。我们知道发起 GET 请求和 POST 请求,只需要在表单的 form 标签中,设...
    99+
    2023-06-02
  • RestTemplate怎么调用POST和GET请求
    本文小编为大家详细介绍“RestTemplate怎么调用POST和GET请求”,内容详细,步骤清晰,细节处理妥当,希望这篇“RestTemplate怎么调用POST和GET请求”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-07-05
  • 怎么用VBS实现发送带Cookie的HTTP请求
    这篇文章主要介绍怎么用VBS实现发送带Cookie的HTTP请求,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!为了方便测试,先写一个回显Cookie的简单的PHP程序: 代码如下:<php foreach($_...
    99+
    2023-06-08
  • java怎么发送get请求header传参
    在Java中发送GET请求并传递header参数,可以使用`java.net.HttpURLConnection`类。下面是一个示例...
    99+
    2023-10-26
    java
  • 怎么利用Javascript发送GET/POST请求
    这篇文章主要为大家展示了“怎么利用Javascript发送GET/POST请求”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么利用Javascript发送GE...
    99+
    2024-04-02
  • RestTemplate Get请求如何实现bean参数传递
    今天小编给大家分享一下RestTemplate Get请求如何实现bean参数传递的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起...
    99+
    2023-07-04
  • 怎么在PHP项目中发送GET请求
    这期内容当中小编将会给大家带来有关怎么在PHP项目中发送GET请求,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。方法一:用fopen()打开url<php $fp = ...
    99+
    2023-06-14
  • Python Http发送请求怎么实现
    本篇内容介绍了“Python Http发送请求怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!浅析requests在不借助其...
    99+
    2023-07-02
  • java发送http get请求的两种方式
    长话短说,废话不说一、第一种方式,通过HttpClient方式,代码如下:public static String httpGet(String url, String charset) throws HttpException, IO...
    99+
    2023-05-31
    java http get
  • php发送get请求的方法有哪些
    PHP发送GET请求的方法有以下几种:1. 使用file_get_contents函数:可以通过该函数向指定的URL发送GET请求,...
    99+
    2023-08-11
    php
  • Golang中怎么实现GET请求
    这篇文章主要讲解了“Golang中怎么实现GET请求”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Golang中怎么实现GET请求”吧!一、Golang中的GET请求在Golang中,我们可...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作