iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringRestTemplate的使用与踩坑
  • 347
分享到

SpringRestTemplate的使用与踩坑

SpringRestTemplateSpringRestTemplate基本使用 2023-02-10 12:02:43 347人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录引言项目使用踩坑记录引言 最近的项目需求中有使用到后端发送Http请求,在网上寻找资料后发现可以使用spring自带的RestTemplate类实现,故作此记录 项目使用 将下述

引言

最近的项目需求中有使用到后端发送Http请求,在网上寻找资料后发现可以使用spring自带的RestTemplate类实现,故作此记录

项目使用

将下述代码引入spring容器中(RestTemplate是spring自带的发送http请求的类)

@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
    RestTemplate restTemplate = new RestTemplate(factory);
    return restTemplate;
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
    SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
    factory.setReadTimeout(5000);
    factory.setConnectTimeout(15000);
    // 设置代理
    //factory.setProxy(null);
    return factory;
}

在需要使用的类中直接引入即可

@Autowired
private RestTemplate restTemplate;

代码示例

这里简单示例下post请求,如果又其它需求的可以去搜索一下其它文章

**注意:**发送的post的传参的类型一定要是LinkedMultiValueMap(不能使用JSONobject),否则会报找不到数据的错误

@GetMapping("send")
public String testPost(@RequestParam("code") Integer code){
    String url = "http://localhost:8888/oauth/return";
    LinkedMultiValueMap<String, Object> strinGobjectLinkedMultiValueMap = new LinkedMultiValueMap<>();
    stringObjectLinkedMultiValueMap.set("code",code);
    HttpEntity<LinkedMultiValueMap<String, Object>> jsonObjectHttpEntity = new HttpEntity<>(stringObjectLinkedMultiValueMap);
    ResponseEntity<String> stringResponseEntity = restTemplate.postForEntity(url, jsonObjectHttpEntity, String.class);
    String body = stringResponseEntity.getBody();
    return body;
}
@PostMapping("return")
public String returnPost(@RequestParam Integer code){
    return "哈首府帕斯发";
}

踩坑记录

发送POST请求传参的问题

如下代码,如果使用jsonobject来装载数据发送post请求是会报错的,只能使用LinkedMultiValueMap

@GetMapping("keycloak/getToken")
public String keycloakGetToken(@RequestParam Map<String,String> map){
    //String code = requestObj.getString("code");
    String url = "http://localhost:8081/auth/realms/myRealm/protocol/openid-connect/token";
    String code = map.get("code");
    System.out.println("传进来的code:"+code);
    //HttpHeaders headers = new HttpHeaders();
    //JSONObject jsonObject = new JSONObject();
    //jsonObject.put("grant_type","authorization_code");
    //jsonObject.put("code",code);
    //jsonObject.put("client_id","myclient");
    //jsonObject.put("client_secret","LsvDoZ5g0BQhRDR9ydYqV9tjal8YDeai");
    //jsonObject.put("scope","openid");
    //jsonObject.put("redirect_uri","http://localhost:8888/oauth/keycloak/getToken");
    //HttpEntity<JSONObject> jsonObjectHttpEntity = new HttpEntity<>(jsonObject,headers);
    LinkedMultiValueMap<String, Object> stringObjectLinkedMultiValueMap = new LinkedMultiValueMap<>();
    stringObjectLinkedMultiValueMap.set("grant_type","authorization_code");
    stringObjectLinkedMultiValueMap.set("code",code);
    stringObjectLinkedMultiValueMap.set("client_id","myclient");
    stringObjectLinkedMultiValueMap.set("client_secret","LsvDoZ5g0BQhRDR9ydYqV9tjal8YDeAI");
    stringObjectLinkedMultiValueMap.set("scope","openid");
    stringObjectLinkedMultiValueMap.set("redirect_uri","http://localhost:8888/oauth/keycloak/getToken");
    HttpEntity<LinkedMultiValueMap<String, Object>> jsonObjectHttpEntity = new HttpEntity<>(stringObjectLinkedMultiValueMap);
    ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, jsonObjectHttpEntity, String.class);
    String body = responseEntity.getBody();
    return body;
}

到此这篇关于Spring RestTemplate的使用与踩坑的文章就介绍到这了,更多相关Spring RestTemplate内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringRestTemplate的使用与踩坑

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

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

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

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

下载Word文档
猜你喜欢
  • SpringRestTemplate的使用与踩坑
    目录引言项目使用踩坑记录引言 最近的项目需求中有使用到后端发送http请求,在网上寻找资料后发现可以使用spring自带的RestTemplate类实现,故作此记录 项目使用 将下述...
    99+
    2023-02-10
    Spring RestTemplate Spring RestTemplate基本使用
  • golang http使用踩过的坑与填坑指南
    golang对http进行了很好的封装, 使我们在开发基于http服务的时候, 十分的方便, 但是良好的封装, 很容易是的我们忽略掉它们底层的实现细节。 如下是我踩过的一些坑, 以及...
    99+
    2024-04-02
  • Python使用ClickHouse的实践与踩坑记录
    目录1. 关于ClickHouse使用实践1.1. ClickHouse 应用于数据仓库场景1.2. 客户端工具DBeaver1.3. 大数据应用实践2. Python使用Click...
    99+
    2024-04-02
  • 基于log4j2.properties踩坑与填坑
    目录log4j2.properties踩坑与填坑日志配置采坑格式化日志输出参数记录一份自己的配置文件Log4j2 properties配置文件log4j2.properties踩坑与...
    99+
    2024-04-02
  • vue使用Swiper踩坑解决避坑
    目录我的Swiper定义:报错信息:保留默认名class:swiper-container查看GitHub我的Swiper定义: Failed to execute 'get...
    99+
    2023-05-20
    vue Swiper踩坑解决 vue Swiper避坑
  • 详解vue-socket.io使用教程与踩坑记录
    目录前言我遇到的问题使用教程安装引入(main.js)使用(Page.vue)解决方案结合connect事件+store+路由守卫实现拦截请先允许我狠狠吐个槽:vue-socket....
    99+
    2024-04-02
  • java使用BeanUtils.copyProperties踩坑经历
    目录1. 原始转换2. 使用BeanUtils.copyProperties转换3. 踩坑经历3.1 包装类型转基本类型问题3.2 空格问题3.3 查找不到字段引用3.4 前端误传字...
    99+
    2024-04-02
  • 使用Pytorch 2.0训练踩坑
    概述 最近博主在跑一个实验,但它在Pytorch 1.8版本下感觉有点慢,刚好又看到Pytorch 2.0版本加速很多,所以准备用Pytorch 2.0版本运行代码。在这个过程中,出现了一些小问题,还...
    99+
    2023-09-22
    pytorch 深度学习 python
  • 记一次使用nacos2踩到的坑
    前言 本文素材来源朋友学习nacos2.1.1踩到的坑。直接上正菜 坑点一:出现端口被占用 因为是学习使用,朋友就在物理机搭建了搭建了nacos伪集群,即ip都一样,端口分别为8848,8847,88...
    99+
    2023-09-17
    nginx 服务器 运维 springcloud
  • ReactHooks与setInterval的踩坑问题小结
    目录一、需求二、解决方案1、函数式更新2、使用useRef3、用useReducer4、自定义的hooks一、需求 我们希望有一个每一秒自动+1的定时器 function Count...
    99+
    2024-04-02
  • Go使用proto3的踩坑实战记录
    开发环境:windows10,golang1.18.2,goland2022.2 最近在写项目时,一些数据类的结构以protobuf文件给定。因此,需要将这些protobuf文件转换...
    99+
    2023-02-13
    go proto3 go使用proto3
  • VUE使用中踩过的坑有哪些
    小编给大家分享一下VUE使用中踩过的坑有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.路由变化页面数据不刷新问题出现这种...
    99+
    2024-04-02
  • Redis Cluster集群主从切换的踩坑与填坑
    因为项目的原因采用了Redis Cluster,3主3从,每台主机1主1从,集群信息如下: 10.135.255.72:20011> cluster nodes 7b662b...
    99+
    2024-04-02
  • 基于log4j2.properties踩坑与填坑的示例分析
    这篇文章主要介绍基于log4j2.properties踩坑与填坑的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!log4j2.properties踩坑与填坑日志配置门面模式:slf4j日志库:log4j2引入...
    99+
    2023-06-22
  • 关于vue2使用swiper4的踩坑记录
    目录前言踩坑1:为了保证稳定,每次在package.json更该版本,最好立即下载当前版本,随后重启webstorm。踩坑2:引入位置踩坑3:使用空间,如果是轮播图内套轮播图,则需要...
    99+
    2024-04-02
  • vue2使用swiper4踩坑的示例分析
    vue2使用swiper4踩坑的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言一开始打算采用最新的swiper7,后来好像是vue2兼容性问题,各种报错,所以从...
    99+
    2023-06-26
  • vue3使用socket.io的踩坑实战记录
    目录问题一:vue-socket.io与socket.io的区别一、socket.io二、vue-socket.io问题二:受同源策略的影响,怎样跨域总结我们的项目出现聊天室、客服等...
    99+
    2023-03-19
    vue3 socket.io vue3使用socket.io
  • 使用springboot单例模式与线程安全问题踩的坑
    springboot单例模式与线程安全问题踩的坑 最近有客户反映,使用公司产品时,偶尔会存在崩溃情况,自己测试无问题,然后去查日志,是报空指针。 于是顺藤摸瓜 往上找,好嘛,之前的开...
    99+
    2024-04-02
  • JavaScript中数组sort()方法的基本使用与踩坑记录
    前言 在日常的代码开发中,关于数组排序的操作可不少,JavaScript 中可以调用 sort 方法对数组进行快速排序。 今天,就数组的 sort 方法来学习一下,避免日后踩坑的悲惨...
    99+
    2024-04-02
  • react中使用usestate踩坑及解决
    目录usestate的常规用法useState遇到的坑1、useState不适合复杂对象的更改2、useState异步回调的问题3、根据hook的规则,使用useState的位置有限...
    99+
    2022-11-13
    react使用usestate usestate踩坑 react中usestate
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作