在 org.springframework.web.client.RestTemplate这个类的使用过程中遇到了点小疑惑,这里和大家分享一下,同时也是做个备忘录。

先给结果,后说疑问:

//方法一 使用RestTemplateBuilder来实例化
RestTemplateBuilder builder = new RestTemplateBuilder();
RestTemplate restTemplate = builder.basicAuthentication("username", "password").build();
ResponseEntity<String> entity = restTemplate.getForEntity(url, String.class);
String msg = entity.getBody();
System.out.println(msg);//方法二 使用拦截器
RestTemplate restTemplate = new RestTemplate();
List<ClientHttpRequestInterceptor> interceptors = restTemplate.getInterceptors();
interceptors.add(new BasicAuthenticationInterceptor("username","password"));
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
String msg = response.getBody();
System.out.println(msg);//方法三 使用HttpHeaders
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setBasicAuth("username", "password");
HttpEntity<String> httpEntity = new HttpEntity<String>(headers);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class);
String msg = response.getBody();
System.out.println(msg); 

以上三种方式都是可行方案,第一种和第二种的好处是可以把身份验证部分抽出来写成公共的,每次调用时只需要注意请求地址和参数即可。第三种是多个地址不同的身份验证,每次都可是自己灵活配置。

第三种方案在测试时发现只能使用restTemplate.exchange才好用,无法使用getForEntity等方法,目前还没找到原因。

下一篇文章再说说WebClient

PS:还有一点忘记说了,有人会建议Base64.encodeBase64去编码(username:password)然后在header里add一个Authorization,这个方式在spring5.1以后官方给出 headers.setBasicAuth("username","password")更简化了代码方案,也就是上面第三种写法。

Spring RestTemplate的Basic Auth使用相关推荐

  1. Rest Api 项目添加 Basic Auth 认证

    title: Rest Api 项目添加 Basic Auth 认证 date: 2022-10-10 22:09 tags: [Java,Spring Boot,Rest Api,Basic Aut ...

  2. Spring RestTemplate中文乱码解决方案

    Spring RestTemplate中文乱码解决方案 参考文章: (1)Spring RestTemplate中文乱码解决方案 (2)https://www.cnblogs.com/accesski ...

  3. Nginx配置Basic Auth登录认证的实现方法

    这篇文章主要介绍了Nginx配置Basic Auth登录认证的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 有时候我们通过nginx搭建了一台文件服务器, 一般 ...

  4. 配置kubernetes服务basic auth

    由于一些内部服务访问并不需要鉴权,如kubernetes-dashboard.traefik-ui,所以当我们想通过外网域名访问的时候会有安全问题.这里我们可以为服务配置basic auth,访问时需 ...

  5. nginx basic auth配置踩坑记

    nginx的basic auth配置由ngx_http_auth_basic_module模块提供,对HTTP Basic Authentication协议进行了支持,用户可通过该配置设置用户名和密码 ...

  6. java 获取400的错误信息_获取400错误的请求Spring RestTemplate POST

    我想使用POST方法使用Spring Rest web服务.我无法在客户端(网站)访问POJO文件,因此必须在客户端使用JSON并在Web服务中使用POJO.下面是我的代码:获取400错误的请求Spr ...

  7. Spring RestTemplate中几种常见的请求方式GET请求 POST请求 PUT请求 DELETE请求

    Spring RestTemplate中几种常见的请求方式 原文地址: https://blog.csdn.net/u012702547/article/details/77917939 版权声明:本 ...

  8. 具有链接资源的Spring RestTemplate

    Spring Data REST是一个了不起的项目,它提供了一些机制来将基于Spring Data的存储库中的资源公开为REST资源. 使用链接资源公开服务 考虑两个简单的基于JPA的实体,课程和教师 ...

  9. 使用Spring RestTemplate和Super类型令牌消费Spring-hateoas Rest服务

    Spring-hateoas为应用程序创建遵循HATEOAS原理的基于REST的服务提供了一种极好的方法. 我的目的不是要展示如何创建服务本身,而是要展示如何将客户端写入服务. 我将要使用的示例服务是 ...

  10. Nginx下配置Http Basic Auth

       nginx basic auth指令 第一条语句: 语法:     auth_basic string | off; 默认值:     auth_basic off; 配置段:     http ...

最新文章

  1. 智能车百度赛道培训第一弹-基础篇
  2. 深度学习模型之各种caffe版本(Linux和windows)的网址
  3. mybatis学习笔记(3)—数据库和bean名称不一样处理方案
  4. AngularJS:如何使用自定义指令来取代ng-repeat
  5. HTML前端常见攻击方式案例讲解
  6. 轻松使用zstd来解压缩
  7. React Native 学习记录
  8. PIE SDK 坐标系创建、定义、对比
  9. 基于MVC的JavaScriptWeb富应用开发
  10. [BZOJ4872][六省联考2017]分手是祝愿(期望DP)
  11. 月薪3万Java优秀简历模板
  12. Java项目开发管理工具-Maven基础
  13. 1.27(Bomb Game)
  14. 关于华为和荣耀手机升级鸿蒙系统之后无法连接magicbook多屏协同的问题
  15. linux 常用文本处理工具
  16. 无线测量APP开发总结
  17. 在使用123作为rand matlab,西安电子科技大学MATLAB考试试卷
  18. icmp type code 对应表
  19. Seam - 无缝集成 JSF,第 2 部分: 借助 Seam 进行对话
  20. Java 8 stream的记录

热门文章

  1. mysql if 多个,mysql多个if语句
  2. linux sticky,session_sticky命令
  3. PyQt4转PyQt5心得
  4. 6.18上午CVPR直播 | 清华三维视觉研究团队:三维人体重建与渲染、高精度人脸生成
  5. 偏流角为什么是arcsin(w/V)
  6. stm32头文件学习之Core_cm3.c(h)
  7. Inception(盗梦空间)及代码实现
  8. 批量修改后缀名和添加后缀名
  9. c语言进行数据统计分析的研究报告,【干货分享】CCTS:临床试验统计分析计划及统计分析报告...
  10. 求两个圆公切线的模板