RestTemplate的学习与使用

AFSim 2.9实战指南:从入门到精通的中文教程 本文是AFSim 2.9的实战中文教程,旨在帮助用户从零开始掌握这一先进的仿真框架。内容涵盖从环境安装、运行第一个“Hello World”仿真,到深入理解实体、组件、想定编辑器等核心概念,并进阶探讨动力学建模、传感器仿真与红蓝对抗想定构建。最后,指南还提供了效能分析与实战排错技巧,帮助用户将仿真结果转化为有价值的量化数据,适用于军事、航空航天等领域的复杂系统行为模拟研究。 阅读详情

RestTemplate的学习与使用

最近在开发过程中遇到使用接口传输数据,了解到到RestTemplate

1、 源码分析


public class RestTemplate extends InterceptingHttpAccessor implements RestOperations {
		public RestTemplate(ClientHttpRequestFactory requestFactory) {
        this();
        this.setRequestFactory(requestFactory);
    }
}

// SimpleClientHttpRequestFactory  实现了ClientHttpRequestFactory  可以设置请求时间和超时时间等...
public class SimpleClientHttpRequestFactory implements ClientHttpRequestFactory, AsyncClientHttpRequestFactory {
    // 设置参数
    private static final int DEFAULT_CHUNK_SIZE = 4096;
    @Nullable
    private Proxy proxy;
    private boolean bufferRequestBody = true;
    private int chunkSize = 4096;
    private int connectTimeout = -1;
    private int readTimeout = -1;
    private boolean outputStreaming = true;
    @Nullable
    private AsyncListenableTaskExecutor taskExecutor;
}

2、 创建Util

public class ConnectionUtil {
	public static RestTemplate getConnectionFactory(){
	    SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
	    factory.setConnectTimeout(5000);
	    factory.setReadTimeout(5000);
	    RestTemplate restTemplate = new RestTemplate(factory);
	        // 设置请求返回的编码格式
        List<HttpMessageConverter<?>> httpMessageConverters = restTemplate.getMessageConverters();
        httpMessageConverters.stream().forEach(httpMessageConverter -> {
            if(httpMessageConverter instanceof StringHttpMessageConverter){
                StringHttpMessageConverter messageConverter = (StringHttpMessageConverter) httpMessageConverter;
                messageConverter.setDefaultCharset(Charset.forName("UTF-8"));
            }
        });
	    return restTemplate;
	}
}

3、post请求


// 设置请求参数  
Map<String, Object> param = new HashMap<>();
param.put("username", username);
param.put("password", password);

String url = loginOn_URL;

// post请求try-catch包起来
try {
    RestTemplate restTemplate = ConnectionUtil.getConnectionFactory();
    //设置contentType类型
    HttpHeaders headers = new HttpHeaders();
    // 设置请求内容类型
    headers.setContentType(MediaType.APPLICATION_JSON);
    // 保持长连接
    headers.add("Connection", "Keep-Alive");
    // 设置Authorization身份验证  
    headers.add("Authorization", "Bearer " + Token);
    HttpEntity<Map<String, Object>> request = new HttpEntity(param, headers);
    // 直接返回结果
    String result = restTemplate.postForObject(url, request, String.class);
    // 返回结果转换成JSONObject
    JSONObject resultJo = JSONObject.parseObject(result);
    // 得到返回结果参数
    String xxx = resultJo.getString("xxx")
} catch (Exception e) {
    log.error("post error");
    throw new RuntimeException("post error");
}

4、get请求


// 1 请求参数在body中,格式为json的设置 
Map<String, Object> param = new HashMap<>();
param.put("ProviderID", ProviderID);
String url = getStatus_URL;

JSONObject resultJo = new JSONObject();
try {
    RestTemplate restTemplate = ConnectionUtil.getConnectionFactory();
  
    HttpHeaders headers = new HttpHeaders();
    //设置contentType类型
    headers.setContentType(MediaType.APPLICATION_JSON);
    headers.add("Authorization", "Bearer " + Token);
    headers.add("Connection", "Keep-Alive");
    HttpEntity<Map<String, Object>> request = new HttpEntity(param, headers);
 // 要使用这个方法  不使用getForObject
    ResponseEntity<String> resEntity = restTemplate.exchange(url, HttpMethod.GET, request, String.class);
    resultJo = JSON.parseObject(resEntity.getBody());
    log.info("get result=" + resultJo);
    
} catch (Exception e) {
    log.error("get error");
    throw new RuntimeException("get error");
}

// 2 请求参数直接拼接到url路径上的
Map<String, Object> param = new HashMap<>();
long timeMillis = System.currentTimeMillis();
param.put("ProviderID", ProviderID);
param.put("Date", timeMillis);

String url = getStaticMessage + param.get("ProviderID") + "&Date=" + param.get("Date");
JSONObject resultJo = new JSONObject();
    try {
       RestTemplate restTemplate = ConnectionUtil.getConnectionFactory();
            //设置contentType类型
            HttpHeaders headers = new HttpHeaders();
            headers.add("Authorization", "Bearer " + Token);
            HttpEntity<String> request = new HttpEntity(null, headers);
            ResponseEntity<String> resEntity = restTemplate.exchange(url, HttpMethod.GET, request, String.class);

            resultJo = JSONObject.parseObject(resEntity.getBody());
            System.out.println("the vehicleInfo result=" + resultJo);

    } catch (Exception e) {
        log.error("the vehicleInfo error");
        throw new RuntimeException("the vehicleInfo error");
    }
      

5、文件内容转换成base64 的转换


// 根据本地路径将图片设置成base64格式
private String changeBase64(String url) {
	// 本地文件路径
    url = "D:/record saved/alarmpic/9860223/2021-12-31/9860223_082001_00-01.jpg";
    InputStream in = null;
    byte[] data = null;
    // 读取图片字节数组
    try {
        in = new FileInputStream(url);
        data = new byte[in.available()];
        in.read(data);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    // 输出字节数组的长度
    log.info("the byte length=" + data.length);
    /**
    *将字节数组转换成为base64格式
    */
    /* 
    * 刚开始网上查到的这个方法,不推荐使用  会在末尾添加换行符,
    * 传参数的时候会有问题,报400 bad request  
	 BASE64Encoder encoder = new BASE64Encoder();
	 encoder.encode(data);
	*/
    //  这个方法是jdk自带的,可以不考虑换行符的问题,推荐使用
    String code = Base64.getEncoder().encodeToString(data);
    return code;
}

自监督预训练(三)wav2vec 2.0原理剖析 一、整体流程 二、feature encoder 理解Conv1d nn.Conv1d(in_channels=5, out_channels=20, kernel_size=3, stride=2) 假设输入input=(batch, in_channels, in_len) batch=1 in_channels=5,对应向量大小,比如word embedding in_len=10,对应word的个数 cnn内部kernel=(in_channels, kernel_size)=(5,3),相当 阅读详情

相关推荐

手把手教你设计热电偶信号采集电路:从运放选型到ADC配置全流程

本文详细解析了热电偶信号采集电路的设计全流程,重点涵盖从高精度运放选型、差分放大电路设计到ADC配置与软件处理的工程实践。针对热电偶输出的微弱毫伏级差分信号,文章深入探讨了如何克服噪声、实现冷端补偿,并提供了具体的器件选型建议与电路调试技巧,旨在帮助工程师构建稳定可靠的高精度温度测量系统。

weixin_29169899的博客 415

RestTemplate 详解

在项目中,当我们需要远程调用一个 HTTP 接口时,我们经常会用到 RestTemplate 这个类。这个类是 Spring 框架提供的一个工具类。Spring 官网对它的介绍如下:从上面的介绍中我们可以知道:RestTemplate 是一个同步的 Rest API 客户端。下面我们就来介绍下 RestTemplate 的常用功能。 RestTemplate 提供高度封装的接口,可以让我们非常方便地进行 Rest API 调用。常见的方法如下:表格:RestTemplate 的方法上面的方法我们大致可以分为

Admans的专栏 2374

那些年对支付宝的研究[整理]

支付宝功能强大.他内部各个功能间的跳转是通过Uri 实现的.而使用window.location.href 即可.跟浏览器一样的协议.很方便 H5启动支付宝: alipays://platformapi/startapp?appId=20000067&url=网址 alipays://platformapi/startapp?appId=20000691&url=网址 ali...

技术专研 8914

resttemplate返回类型_RestTemplate用法说明

RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端库。它提供了一套接口,然后分别用三种 Java 最常用 Http 连接的库来分别实现这套接口:JDK 自带的 HttpURLConnectionApache 的 HttpClientOKHttp31. 环境准备如果在Springboot项目里使用,包含 start-web 即可implementation 'org....

weixin_39959126的博客 1205

Zemax操作41--公差分析(一)

zemax公差

lzy750750的博客 5972

RAG开源框架深度评测:从RAGFlow到Dify的实战选型指南

本文深度评测了主流RAG开源框架(RAGFlow、Dify、WeKnora)的核心能力与实战表现,提供企业级选型指南。重点对比了文档解析、检索性能和生产部署等关键指标,揭示RAGFlow在复杂文档处理、Dify在低代码开发、WeKnora在腾讯生态集成的差异化优势,并给出技术选型决策树与成本优化方案。

weixin_29294597的博客 825

resttemplate get请求_RestTemplate 最详解

在项目中,当我们需要远程调用一个 HTTP 接口时,我们经常会用到 RestTemplate 这个类。这个类是 Spring 框架提供的一个工具类。Spring 官网对它的介绍如下:RestTemplate: The original Spring REST client with a synchronous, template method API.从上面的介绍中我们可以知道:RestTempl...

weixin_39827306的博客 4043

YOLOv8的二次创新 | 结合iRMB与EMA打造全新的iEMA机制,提升动态检测性能【附保姆级代码】

YOLOv8继承了YOLO系列的轻量化和高效检测特性,同时通过改进的架构设计使得其在实时场景下具有更高的检测精度。然而,随着检测需求的增加,尤其是在动态目标检测和长时间序列检测中,YOLOv8的鲁棒性依然可以提升。通过iEMA机制的引入,我们将在这些方面进行进一步优化。iRMB模块是我们对传统Residual Block的进一步改进。通过多层特征提取,iRMB能够捕捉更多层次的特征信息,并通过引入轻量化的残差结构,提升计算效率。

一键难忘的博客 3085

判断数据是否为json类型

判断数据是否为json类型

VIVI_优快云01的博客 1849

YOLO26涨点改进 | 检测头Head创新改进篇 | 利用RFAConv感受野注意力卷积改进YOLO26检测头,RFAHead感受野注意力检测头,助力小目标检测高效涨点

YOLO26作为轻量化目标检测模型的新一代标杆,凭借高效的Backbone与Neck结构,在实时检测场景中表现突出,但原生检测头仍存在核心痛点——感受野固定、小目标特征感知薄弱、多尺度目标适配不足,导致在小目标密集、复杂背景遮挡等场景中漏检率偏高、定位精度不足。

qq_36130719的博客 167

《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)

《C++面向对象程序设计》✍千处细节、万字总结 文章目录《C++面向对象程序设计》✍千处细节、万字总结一、面向对象程序设计二、C++基础2.1 C++的产生和特点2.2 一个简单的C++示例程序2.3 C++在非面向对象方面对C语言的扩充输入和输出cinconst修饰符void型指针内联函数带有默认参数值的函数函数重载作用域标识符"::"强制类型转换new和delete运算符引用三、类和对象(一)3.1 类的构成3.2 成员函数的定义3.3 对象的定义和使用3.4 构造函数与析构函数构造函数成员初始化列表

像写诗一样优雅地写代码~ 78万+

RestTemplate发起POST请求,json参数小坑

原来的代码 public JSONObject temlateUtil(MultiValueMap<String, String> params,String pathUrl){ RestTemplate restTemplate = new RestTemplate(); String url = String.format(pathUrl); ...

qq_34002000的博客 7753

【PointNet++】制作点云数据集使用CloudCompare进行标注

使用PointNet++复现成功后,需要训练自己的数据集。于是使用cloudcompare参照ShapeNet的数据集格式去制作,最终保存的txt文件格式为“xyz+rgb+label”,一共7列。 自己按此制作好的数据集已成功训练及推测,于是记录下来让好兄弟好姐妹们少踩坑多吃肉。

纵马踏花向自由 5713

SpringCloud学习之-RestTemplate使用详解

上一篇学习了如何使用RestTemplate发送http请求,但是讲解比较简单。所以这篇更加详细的探究一下RestTemplate的使用。 首先我们得知道RestTemplate是基于http请求的封装,所以我们就可以根据http请求相关属性来学习RestTemplate的使用。 1.请求连接时间和读取时间的设置 在http请求中,有一个最大的连接时间和读取时间的设置,那这个在RestTemp...

weixin_33949359的博客 306

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

RestTemplate学习使用

RestTemplate的方法使用,以及拓展

little 小样 446

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

RestTemplate的学习使用

最近的项目需求中有使用到后端发送http请求,在网上寻找资料后发现可以使用spring自带的RestTemplate类实现,故作此记录。如下代码,如果使用jsonobject来装载数据发送post请求是会报错的,只能使用LinkedMultiValueMap。将下述代码引入spring容器中(RestTemplate是spring自带的发送http请求的类)这里简单示例下post请求,如果又其它需求的可以去搜索一下其它文章。**注意:**发送的post的传参的类型一定要是。在需要使用的类中直接引入即可。

爱学习的大雄的博客 602

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

spring restTemplate的使用和学习总结

在 Spring 内,是一个非常方便的 HTTP 客户端。虽然在 Spring 5 中WebClient是推荐的替代方法用于进行异步请求,但依然被广泛使用于同步请求场景。以下是一些使用的基础用法示例。

weixin_44131922的博客 1020

springboot学习,如何使用RestTemplate调用Restful接口

现在系统之间功能模块相互调用以及数据的传递,多数都是采用Restful,因为方便、简单嘛。 先说创建吧,这个和普通的Controller的写法感觉差不多,就是对外路径稍微有所不同。不多说,直接上代码。 package com.springboot.controller; import java.util.ArrayList; import java.util.Date; import ja...

知行合一 4000

SpringCloud学习之-使用RestTemplate发送http请求

上一节我们学习了如何使用jdk的URI工具类发送http请求,这一节学习一下spring框架中对于jdk的网络请求工具类的封装RestTemplate. @RestController public class Controller { @GetMapping("hello") public String hello(){ return "hello"; ...

weixin_33716154的博客 1330

还在使用 RestTemplate吗?学习一下官方推荐的 WebClient!

在本文中,我们介绍了官方推荐的WebClient来替代传统的RestTemplate。WebClient具有响应式支持、函数式风格、异步非阻塞和更灵活的配置等优势。使用WebClient可以提高系统性能、并发处理能力和代码可读性。如果你还在使用RestTemplate,现在是时候尝试使用WebClient了!调用RESTful API:可以使用WebClient发送HTTP请求并处理API的响应。例如,可以使用WebClient调用第三方的API来获取用户信息、获取天气数据等。

牛肉胡辣汤 821

[Java学习笔记]使用RestTemplate调用restful服务

使用RestTemplate调用restful服务 什么是RestTemplate? RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。 调用RestTemplate的默认构造函数,RestTemplate对象在底层通过使用java.net包下的实现创建HTTP 请求,可以通...

DoneBug的博客 367

<学习笔记> 为什么还要使用Feign来代替RestTemplate

Feign是一个声明式的http客户端,(要实现发送http请求不好发,只需要把发请求所需要的信息声明出来,剩下的事情就不需要管了,由Feign帮你来做)其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。可读性差:上面的一段代码,是一个http请求的代码,有url路径,又有复杂的请求方式,对于没有接触过远程调用的人来讲,这段代码根本看不懂。太优雅了,只需要一行代码,并且也符合学习springboot时候编写代码的习惯,先注入再调用。请求路径:/user/{id}请求参数:Long id。

X_T_X_的博客 563

SpringCloud 学习笔记六 使用RestTemplate实现服务之间通信

前面我们已经搭建好了User和Order模块,这里我们来简单实现他们之间的服务通信。再User模块新建一个Web.controller的包。写一个controller类,返回一个User对象,所以我们这里需要一个User对象,这里对象能够被所有的子模块都能获取到。哪个模块需要的时候我们就引入依赖就可以了。 so 先新建一个子模块,不需要引任何的依赖。里面只需要一个domain,写一个User实体类 public class User { private Long id; private S

java_Upper Cave Man 481

【学习笔记之java】使用RestTemplate调用第三方接口

上面我们获取的accessToken是写死的,那我们token有过期时间的话我们怎么处理,那就要处理accessToken,使其获取方式为动态的。

IsQiya Bug Worlde 1205

学习记录390@ 关于在gateway中RestTemplate 和 nacos结合使用的一点思考

问题是这样的,今天在做微信登录,需要现在gateway中进行登录验证等工作,结果麻烦不断! 起初我想注入RestTemplate,然后使用restTemplate.getForObject(“http://nacos-user/user/”+openid, String.class) 获取userId, 但是报错了,原因是nacos-user这个服务名没有找到,我仔细检查了,命名我的nacos注册中心就有这个名字啊,为啥就是说找不到呢? 然后查了资料说是要自定义RestTemplate,并且要加上 @Loa

教练我想学编程 1348

SpringBoot学习记录(九):使用RestTemplate发送http请求详解

RestTemplate简介 RestTemplate是Spirng提供的远程访问http的工具,大幅度降低了提交表单的难度,并附带自动转换JSON的功能。工具底层默认使用SimpleClientHttpRequestFactory作为连接工具,当然也可以通过setRequestFactory进行连接方式覆盖。 方法列表 方式 方法名 GET ...

机智的卡夫卡 1458
上一篇: 点击按钮实时刷新图片
下一篇: Linux环境下redis的安装
花落 失忆
博客等级 码龄6年 33粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值