springCloud使用apache的http类和RestTemplate以及Eureka

使用apache的:
package com.csgholding.pvgpsp.eqp.util;import com.esotericsoftware.minlog.Log;
import org.apache.commons.collections4.MapUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Map;/*** @Classname HttpClientUtil* @Date 2021/5/11 8:45* @Created by jj.Zhou*/
public class HttpClientUtil {//字符集private static final String CHARSET = "UTF-8";private static RequestConfig defaultRequestConfig = RequestConfig.custom()//设置等待数据超时时间.setSocketTimeout(300000)//设置连接超时时间.setConnectTimeout(300000)//设置从连接池获取连接的等待超时时间.setConnectionRequestTimeout(300000)//.setStaleConnectionCheckEnabled(true).build();//释放资源,httpResponse为响应流,httpClient为请求客户端private static void release(CloseableHttpResponse httpResponse, CloseableHttpClient httpClient) throws IOException {if (httpResponse != null) {httpResponse.close();}if (httpClient != null) {httpClient.close();}}//get请求带参数、带请求头public static String getAndJson(String urlWithParams, Map<String, String> header, Map<String, String> param) throws URISyntaxException {// 创建uriURIBuilder builder = new URIBuilder(urlWithParams);if (param != null) {for (String key : param.keySet()) {builder.addParameter(key, param.get(key));}}URI uri = builder.build();// 创建http GET请求HttpGet httpGet = new HttpGet(uri);if (!MapUtils.isEmpty(header)) {header.forEach(httpGet::addHeader);}CloseableHttpClient httpClient = null;String result;try {httpClient = HttpClients.createDefault();CloseableHttpResponse response = httpClient.execute(httpGet);HttpEntity entity = response.getEntity();result = EntityUtils.toString(entity, CHARSET);httpGet.releaseConnection();release(response, httpClient);} catch (Exception e) {throw new RuntimeException(e.getMessage());} finally {if (httpClient != null) {try {httpClient.close();} catch (Exception e) {Log.error(e.getMessage());}}}return result;}//get请求带参数、带请求头public static String get(String urlWithParams, Map<String, String> header) {HttpGet httpget = new HttpGet(urlWithParams);if (!MapUtils.isEmpty(header)) {header.forEach(httpget::addHeader);}CloseableHttpClient httpClient = null;String result;try {httpClient = HttpClients.createDefault();CloseableHttpResponse response = httpClient.execute(httpget);HttpEntity entity = response.getEntity();result = EntityUtils.toString(entity, CHARSET);httpget.releaseConnection();release(response, httpClient);} catch (Exception e) {throw new RuntimeException(e.getMessage());} finally {if (httpClient != null) {try {httpClient.close();} catch (Exception e) {Log.error(e.getMessage());}}}return result;}public static String get(String urlWithParams) throws IOException {return get(urlWithParams, null);}//发送post请求,带json请求体和请求头public static ResponseEntity<String> postJson(String url, String json, Map<String, String> headersMap, Integer retryNum) {SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();factory.setConnectTimeout(120000);factory.setReadTimeout(120000);RestTemplate restTemplate = new RestTemplate(factory);HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);for (Map.Entry<String, String> entry : headersMap.entrySet()) {headers.add(entry.getKey(), entry.getValue());}org.springframework.http.HttpEntity<String> request = new org.springframework.http.HttpEntity<>(json, headers);ResponseEntity<String> response = null;try {response = restTemplate.postForEntity(url, request, String.class);if (retryNum > 0 && !HttpStatus.OK.equals(response.getStatusCode())) {retryNum--;postJson(url, json, headersMap, retryNum);}} catch (Exception e) {if (retryNum > 0) {retryNum--;postJson(url, json, headersMap, retryNum);} else {throw e;}}return response;}
}

get方法调用:

    public String callMesEqp() {Map<String, String> header = new HashMap<>();ResponseEntity<String> response;HttpStatus statusCode;String responseBody = "";try {responseBody = HttpClientUtil.get("http://127.0.0.1/t1", der);} catch (Throwable e) {}return responseBody;}

post方法调用:

    public String callMesStepEqp(String syncTime) {Map<String, String> header = new HashMap<>();ResponseEntity<String> response = null;HttpStatus statusCode;String responseBody = "";MesStepEqpQuery query = new MesStepEqpQuery();//query就是请求参数,全是字符串    query.setTrxDate(syncTime);String jsonString = JSON.toJSONString(query);try {response = HttpClientUtil.postJson("http://127.0.0.1:8080/t1, jsonString, header, 1);} catch (Throwable e) {}return response.getBody();}

使用ResTemplate:

    @AutowiredRestTemplate restTemplate;@ApiOperation(value = "通过id获取用户", notes = "通过id获取用户")@GetMapping("getUserByIdApi")public Result<UserVO> getUserByIdApi(@ApiParam("用户id") Integer id) {
//        UserVO vo = restTemplate.getForObject("http://127.0.0.1:8081/v1/user/getUserById?id=" + id, UserVO.class);restTemplate.getForObject("http://127.0.0.1:8081/v1/user/getUserById?id=" + id, Result.class);
//        return Result.success(vo);return (restTemplate.getForObject("http://127.0.0.1:8081/v1/user/getUserById?id=" + id, Result.class));}

使用springCloud的Eureka:

注意我的jdk和cloud版本:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.cloud</groupId><artifactId>springCloudPuls</artifactId><version>1.0-SNAPSHOT</version><modules><module>cloud-common</module><module>cloud-user</module><module>cloud-auth</module><module>cloud-eureka</module></modules><packaging>pom</packaging><properties></properties><dependencyManagement><dependencies><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2022.0.3</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>3.1.5</version><type>pom</type><scope>import</scope></dependency><!--            mysql连接--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency><!--            连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.16</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version></dependency><!--            log4j日志--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!--            swagger--><dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>1.5.20</version></dependency><!--            mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version></dependency><!-- https://mvnrepository.com/artifact/cn.dev33/sa-token-spring-boot3-starter --><dependency><groupId>cn.dev33</groupId><artifactId>sa-token-spring-boot3-starter</artifactId><version>1.37.0</version></dependency></dependencies></dependencyManagement>
</project>

编写Eureka服务器:

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>

yml:

server:port: 8084#eureka配置
eureka:instance:hostname: locahostclient:register-with-eureka: falsefetch-registry: false #is false,me is eurekaService,true is notservice-url:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka

springBoot启动类上加上:

 @EnableEurekaServer

将服务注册进来:

        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-client --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId><version>4.1.0</version></dependency>

 yml:

server:port: 8081
spring:application:name: cloude-user-serverdatasource:driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourceurl: jdbc:mysql://192.168.126.128:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTCusername: rootpassword: 123456
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl#eureka配置
# eureka
eureka:client:register-with-eureka: true   #注册eurekafetch-registry: true    # 获取注册信息service-url:defaultZone: http://127.0.0.1:8084/eureka  #访问地址,一定得是ip地址和端口号!!!instance:prefer-ip-address: true  #暴露ipinstance-id: xry   #名字
management:endpoints:web:exposure:include: '*'jmx:exposure:include: '*'
info:name: qx

 启动类加上:

@EnableDiscoveryClient

然后访问Eureka的页面,http://localhost:8084/

未完,待续 

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

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

相关文章

强化学习(1)——scratching the surface

李宏毅老师的课件 https://www.bilibili.com/video/BV1XP4y1d7Bk/?spm_id_from333.337.search-card.all.click&vd_sourcee7939b5cb7bc219a05ee9941cd297ade ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/9502a795feba46959c56092d5f3…

蓝桥杯练习题(六)

&#x1f4d1;前言 本文主要是【算法】——蓝桥杯练习题&#xff08;六&#xff09;的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 …

【软件工程】《软件工程》期末复习提纲

《软件工程》期末复习提纲 第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 第九章 第十章 第十一章 第十二章 第十三章 第十四章 小题参考 大题参考 《软件工程》期末复习提纲 第一章 1.在下列选项中&#xff0c;&#xff08; &#xff09;不是软…

Monorepo-uniapp 构建分享

Monorepo uniapp 构建灵感&#xff1a;刚好要做一个项目&#xff0c;于是想到升级一下之前自己写的一个vue3tspiniauno的模版框架&#xff0c;其实那个框架也不错&#xff1b;只是感觉还差点东西&#xff0c;我已经用那个小框架写了两三个项目&#xff1b;轻巧实用。为什么选…

Unity中的异步编程【7】——在一个异步方法里播放了animation动画,取消任务时,如何停止动画播放

用一个异步方法来播放一个动画&#xff0c;正常情况是&#xff1a;动画播放结束时&#xff0c;异步方法宣告结束。那如果我提前取消这个异步任务&#xff0c;那在这个异步方法里面&#xff0c;我要怎么停止播放呢&#xff1f;&#xff01; 一、播放animation动画的异步实现 1…

探索数据的奥秘:一份深入浅出的数据分析入门指南

数据分析 书籍推荐 入门读物 深入浅出数据分析啤酒与尿布数据之美数学之美 数据分析 Scipy and NumpyPython for Data AnalysisBad Data Handbook集体智慧编程Machine Learning in Action机器学习实战Building Machine Learning Systems with Python数据挖掘导论Machine L…

基于Python的汽车信息爬取与可视化分析系统

介绍 这款汽车信息网站是基于多项技术和框架设计的全面的汽车信息展示及查询系统。其中&#xff0c;采用了Python Django框架和Scrapy爬虫技术实现数据的抓取和处理&#xff0c;结合MySQL数据库进行数据存储和管理&#xff0c;利用Vue3、Element-Plus、ECharts以及Pinia等前端…

vivado 添加现有IP文件、生成IP

添加现有IP文件 作为从AMD IP目录添加和自定义IP的替代方案&#xff0c;您可以直接添加XCI或XCIX文件。此过程不同于从按以下方式编目&#xff1a; •XCI或XCIX文件可能是早期版本&#xff0c;也可能是相同或完全自定义的版本AMD IP目录中发现的类似IP。 •XCI或XCIX文件可能…

计算机毕业设计 基于Java的手机销售网站的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

设计模式之开闭原则:如何优雅地扩展软件系统

在现代软件开发中&#xff0c;设计模式是解决常见问题的最佳实践。其中&#xff0c;开闭原则作为面向对象设计的六大基本原则之一&#xff0c;为软件系统的可维护性和扩展性提供了强大的支持。本文将深入探讨开闭原则的核心理念&#xff0c;以及如何在实际项目中运用这一原则&a…

计算机二级Python基本排序题-序号44(补充)

1. 统计一个英文单词的集合中包含全部是小写字母的单词总数。 strings { cad, PE , Window, FM, hello, world,flowers } n 0 for word in strings :if word.islower() :n 1 print(n)2. 根据列表中保存的数据采用turtle库画图直方图&#xff0c;显示输出在屏幕上&#xff0…

竞赛保研 基于计算机视觉的身份证识别系统

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于机器视觉的身份证识别系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-sen…

游戏开发丨基于PyGlet的简易版Minecraft我的世界游戏

文章目录 写在前面我的世界PyGlet简介实验内容游戏按键程序设计引入文件 运行结果写在后面 写在前面 本期内容&#xff1a;基于PyGlet的简易版Minecraft我的世界游戏 实验环境&#xff1a; pycharmpyglet 项目下载地址&#xff1a;https://download.csdn.net/download/m0_6…

Linux中的yum源仓库和NFS文件共享服务

一.yum简介 1.1 yum简介 yum&#xff0c;全称“Yellow dog Updater, Modified”&#xff0c;是一个专门为了解决包的依赖关系而存在的软件包管理器。类似于windows系统的中电脑软件关键&#xff0c;可以一键下载&#xff0c;一键安装和卸载。yum 是改进型的 RPM 软件管理器&am…

性能优化2.0,新增缓存后,程序的秒开率不升反降

目录 一、前情提要经过4次优化&#xff0c;将页面的加载时间控制在了1秒以内&#xff0c;实打实的提升了程序的秒开率。 二、先了解一下&#xff0c;什么是缓存1、缓存有哪些分类2、本地缓存与分布式缓存 三、Guava Cache本地缓存1、Google Guava2、Loadingcache数据结构3、Loa…

C#--核心

CSharp核心知识点学习 学习内容有&#xff1a; 绪论&#xff1a;面向对象的概念 Lesson1&#xff1a;类和对象 练习&#xff1a; Lesson2&#xff1a;封装--成员变量和访问修饰符 练习: Lesson3:封装--成员方法 Lesson4&#xff1a;封装--构造函数和析构函数 知识点四 垃圾回收…

在 .NET 中使用可以漫游的 Web 凭据

Windows 凭据管理器是一个内置在 Windows 操作系统中的功能&#xff0c;为用户提供一种安全的方式来存储和管理凭据。本文主要介绍如何在 .NET 中使用可以漫游的 Web 凭据&#xff0c;以及使用中的基本事项。 1. 引言 在前面的文章《试用 Windows Terminal 中的 Terminal Chat…

FPGA时序分析与时序约束(四)——时序例外约束

目录 一、时序例外约束 1.1 为什么需要时序例外约束 1.2 时序例外约束分类 二、多周期约束 2.1 多周期约束语法 2.2 同频同相时钟的多周期约束 2.3 同频异相时钟的多周期约束 2.4 慢时钟域到快时钟域的多周期约束 2.5 快时钟域到慢时钟域的多周期约束 三、虚假路径约…

线性代数基础【4】线性方程组

第四章 线性方程组 一、线性方程组的基本概念与表达形式 二、线性方程组解的基本定理 定理1 设A为mXn矩阵,则 (1)齐次线性方程组AX0 只有零解的充分必要条件是r(A)n; (2)齐次线性方程组AX0 有非零解(或有无数个解)的充分必要条件是r(A)&#xff1c;n 推论1 设A为n阶矩阵,则…

GPT2 GPT3

what is prompt 综述1.Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing(五星好评) 综述2. Paradigm Shift in Natural Language Processing(四星推荐) 综述3. Pre-Trained Models: Past, Present and Future Pro…