RestTemplate发送请求、基本spring自带RestTemplate发送请求、RestTemplate设置请求头

今天分享RestTemplate,直接上代码:

因个人需求需要重写RestTemplate,并设置请求头

import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestTemplateConfig {

    String username = "admin";
    String password = "admin123";

    @Bean
    public RestTemplate restTemplate() {

        CloseableHttpClient customHttpClient = returnCloseableHttpClient();

        // 使用 HttpComponentsClientHttpRequestFactory 配置 RestTemplate
        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(customHttpClient);

        RestTemplate restTemplate = new RestTemplate(factory);

        // 配置 MappingJackson2HttpMessageConverter 以处理 JSON 数据
        restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

        return restTemplate;
    }


    public  CloseableHttpClient returnCloseableHttpClient(){
        // 创建 HttpClientBuilder
        HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();

        // 设置 BasicAuth
        CredentialsProvider provider = new BasicCredentialsProvider();

        // 创建认证范围
        AuthScope scope = new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM);

        // 创建凭据对
        UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(username, password);
        provider.setCredentials(scope, credentials);
        httpClientBuilder.setDefaultCredentialsProvider(provider);

        // 创建自定义的 CloseableHttpClient
        return httpClientBuilder.build();
    }
}

----调用前提:

@Service
public class SysEmployeeCardServiceImpl implements SysEmployeeCardService {

    @Value("${access-control-address}")
    private String ipAddress;

    private final RestTemplate restTemplate;

    @Autowired
    public SysEmployeeCardServiceImpl(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    @Override
    public CardInfoSearch findEmployeeCard(CardInfoSearchCond cardInfoSearchCond) {
        String url = ipAddress + Constants.CARDINFO_SEARCH ;

        String jsonRequest= JsonUtils.ctreteJsonString("CardInfoSearchCond",cardInfoSearchCond);
        String result = JsonUtils.resultString(jsonRequest,url,restTemplate, HttpMethod.POST);
        System.out.println(result);

        CardInfoSearch cardInfoSearch=parseEmployeeCardFromResult(result);
        return cardInfoSearch;
    }
}

-----调用:

/**** @param jsonRequest 请求体* @param url  请求url* @param restTemplate* @param httpMethod 请求方式* @return*/
public static String resultString(String jsonRequest, String url, RestTemplate restTemplate,HttpMethod httpMethod){// 创建HTTP请求头,通常需要设置Content-Type为application/jsonHttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);HttpEntity<String> requestEntity = new HttpEntity<>(jsonRequest, headers);// 发送POST请求,并获取响应//String result = restTemplate.postForObject(url, requestEntity, String.class);ResponseEntity<String> resultEntity = restTemplate.exchange(url, httpMethod, requestEntity, String.class);String result = resultEntity.getBody();return result;
}

--------不需要设置请求的话,直接发送

RestTemplate 直接发送get

ResponseEntity<String> response = restTemplate.getForEntity(url, String.class); String responseBody = response.getBody();

RestTemplate 直接发送post

HttpHeaders headers = new HttpHeaders();  
headers.set("Content-Type", "application/json");  
HttpEntity<String> entity = new HttpEntity<>("requestBody", headers);  
ResponseEntity<String> response = restTemplate.postForEntity(url, entity, String.class);  
String responseBody = response.getBody();

RestTemplate 直接发送put

HttpHeaders headers = new HttpHeaders();  
headers.set("Content-Type", "application/json");  
HttpEntity<String> entity = new HttpEntity<>("requestBody", headers);  
ResponseEntity<String> response = restTemplate.put(url, entity, String.class);  
String responseBody = response.getBody();

RestTemplate 直接发送delete

ResponseEntity<String> response = restTemplate.delete(url);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/203937.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习Python能给我们带来什么?有什么帮助?

文章目录 前言学习Python能做什么1、抓取各类数据、文本等信息2、批量清洗和处理数据3、提供可视化工具4、进行深度学习 Python的用途有哪些普通人学习python有什么好处关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python…

要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 4 章:控制温度和 Top-p 采样

要求CHATGPT高质量回答的艺术&#xff1a;提示工程技术的完整指南—第 4 章&#xff1a;控制温度和 Top-p 采样 控制温度和 Top-p 采样是用于管理人工智能语言模型在生成文本时输出的创造性、连贯性和集中性的技术。 让我们打一个比方来简化它&#xff1a;把人工智能想象成一…

Linux挂载配置本地yum源

1.vi /etc/yum.repos.d/redhat.repo 2. [baseos] namebaseos baseurlfile:///mnt/BaseOS #enabled:默认为1 enabled1 gpgcheck0 [appstream] nameappstream baseurlfile:///mnt/AppStream enabled1 gpgcheck0 3. mount /dev/sr0 /mnt/ 4.yum clean all 5.yum makecache

神秘鸭是如何让你的手机控制你的电脑的?

神秘鸭 神秘鸭即是一个应用&#xff0c;它能让手机语音助手、智能音箱变的更为强大&#xff01;通过神秘鸭&#xff0c;您的手机语音助手、智能音箱可以用来控制电脑、智能家居、DIY的物联网设备。 支持的手机、平板品牌 Apple 华为 小米 三星 OPPO VIVO 一加 当然不代表仅支…

感兴趣书单汇总

文章目录 声明科幻小说哲学书数学 声明 本帖持续更新 科幻小说 《三体》&#xff08;已读&#xff09;《献给阿尔吉侬的花束》&#xff08;已读&#xff09; 哲学书 数学 《Principia Mathematica》&#xff08;未读&#xff09;&#xff1a;怀特海德和罗素所著&#xff…

C# Solidworks二次开发:创建坐标系方法和获取零件质心坐标方法详解

今天要讲的是如何在Solidworks创建坐标系和获取零件的质心方法详解&#xff0c;创建坐标系的API如下所示&#xff1a; 1、创建坐标系API如下所示&#xff1a;Feature swCoordSys1 swFeatMgr.InsertCoordinateSystem(false, false, false); 其中方法的输入参数有三个&#xf…

1466. 重新规划路线 --力扣 --JAVA

题目 n 座城市&#xff0c;从 0 到 n-1 编号&#xff0c;其间共有 n-1 条路线。因此&#xff0c;要想在两座不同城市之间旅行只有唯一一条路线可供选择&#xff08;路线网形成一颗树&#xff09;。去年&#xff0c;交通运输部决定重新规划路线&#xff0c;以改变交通拥堵的状况…

SpringBoot 知识梳理

学习目标 掌握基于 SpringBoot 框架的程序开发步骤熟练使用基于 SpringBoot 配置信息修改服务器配置基于 SpringBoot 的完成 SSM 整合项目开发 1 SpringBoot 简介 1.1 入门案例 1.1.1 步骤 ① &#xff1a;创建新模块&#xff0c;选择 Spring 初始化&#xff0c;并配置模块…

Doris 编译报错 Error: flex version (2.5.37) must be greater than or equal to 2.6.0

Doris 编译过程报错 Error: flex version (2.5.37) must be greater than or equal to 2.6.0yum update flex 不生效 下载flex 安装包 https://github.com/westes/flex/releases解压 tar -xvf flex-2.6.4.tar

万宾科技智能水环境综合治理监测系统效果

水环境综合治理是一项旨在全面改善水环境质量的系统工程。它以水体为对象&#xff0c;综合考虑各种因素&#xff0c;通过科学规划和技术手段&#xff0c;解决水环境污染、生态退化等问题&#xff0c;核心理念是“统一规划、分步实施&#xff1b;标本兼治&#xff0c;重在治本&a…

习题练习讲解

前言&#xff1a;这又是一个新坑&#xff0c;算上之前的4个坑这是第五个坑&#xff08;1、C/C的讲解&#xff0c;2、C语言小游戏&#xff0c;3、大学生活&#xff0c;4、假哲家因为某些原因没GS&#xff09;&#xff0c;这个就是发一些自己在刷题的过程中遇到自己感觉还不错的习…

Mendix版的电商京东首页长什么样儿?

前言 世界需要大前端。大前端需要Mendix。 近日经常有企业IT侧的朋友反应&#xff0c;自家需要一个神奇的内容管理平台&#xff0c;来快速打造随需应变的公司官网&#xff0c;亦或企业官微&#xff0c;如果能在小程序里呈现产品营销类的功能更好。首先要肯定的是&#xff0c;…

Linux设置Docker自动创建Nginx容器脚本

文章目录 前言一、本地新建脚本二、复制本地脚本到服务器三、执行服务器脚本总结如有启发&#xff0c;可点赞收藏哟~ 前言 一、本地新建脚本 在本地新建nginx-generator.sh脚本文件&#xff0c;并保存以下内容 主要动态定义两个变量&#xff08;容器名称/服务器本地文件名、端…

Spring Cache【娓娓道来】

目录​​​​​​​ 1.自我介好&#x1f633;&#x1f633;&#x1f633; 2.常用注解 &#x1f495;&#x1f495;&#x1f495; 3.EnableCaching&#x1f926;‍♂️&#x1f926;‍♂️&#x1f926;‍♂️ 4.CachePut&#x1f937;‍♀️&#x1f937;‍♀️&#x1f93…

php第三方skd自动加载

把mugou-sdk复制到项目下在composer.josn找到classmap加入sdk "autoload": {"classmap": ["mugou-sdk"] },在composer.josn找到files加入sdk "autoload": {"files":[mugou-sdk] },项目目录下运行 composer dump-autoload…

Python 从入门到精通 学习笔记 Day01

Python 从入门到精通 第一天 今日目标 计算机组成原理、编程语言、Python环境安装 第一个Python程序、PyCharm的安装与使用 Python的基础语法、Python的基本数据类型 一、计算机组成原理 计算机的组成 计算机硬件通常由以下几个部分组成: 1.中央处理器(CPU):负责执行计算机…

高防CDN:企业网络安全的坚实屏障

在当今数字化时代&#xff0c;企业网络面临着不断增长的网络威胁和攻击。为了维护企业在线业务的正常运行&#xff0c;高防CDN&#xff08;Content Delivery Network&#xff09;作为网络安全的坚实屏障&#xff0c;扮演着至关重要的角色。本文将从一家企业公司的角度出发&…

windows建立软链 报 无法将“mklink”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

当我执行网上提供的mklink 的时候&#xff0c;出现 mklink : 无法将“mklink”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。怎么回事&#xff0c;原来&#xff0c;要在执行的签名加 cmd /c 当我执行建立软链接时&#xff0c;提示 没有足够的权限&#xff0c;要用管理…

SE考研真题总结(一)

本帖开始分享考研真题中设计【软件工程】的部分&#xff0c;预计会出5期左右&#xff0c;敬请期待~ 一.单选题 1.程序编写不是软件质量保障过程~ 静态代码扫描是今年来多数被人提及的软件应用安全解决方案之一&#xff0c;指程序员在编写好代码后无需进行编译&#xff0c;直接…

【数据结构】—红黑树(C++实现)

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 &#x1f49c;本文前置知识&#xff1a; AVL树 ♈️今日夜电波&#xff1a;Letter Song—ヲタみん 1:36━━━━━━️&#x1f49f;──────── 5:35 …