resttemplate

Spring---RestTemplate远程调用python rest接口

浪子不回头ぞ 提交于 2020-01-19 07:16:13
Spring---RestTemplate远程调用python rest接口 近期公司做一个项目,Java这边直接远程调用Python远程提供的接口。我这边是自己搭建的SpringCloud 后端的框架,具体不说,因为俩者之间的通信是靠Spring 提供的Rest,和框架之间并无任何一点影响。Python那边我使用的是Flask模块提供请求和响应。如果有人疑问,可以找我,我必然知无不言言无不尽得。我写这东西也是为了记住他。对于一个陌生的领域,网上收到的东西,比较杂乱,我也是通过半天吧,才把一些东西弄懂,拼凑出来,对于不懂得人,确实太难了。希望这篇文章可以帮到你,解决实际得问题。好了,废话不多说,下面开始了。 首先配置RestTemplate,Rest的配置一成不变的,自己在网上找一下都是一样的 package com.example.demo.utils; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.http.client.ClientHttpRequestFactory; import org

RestTemplate无法注入

≡放荡痞女 提交于 2020-01-18 18:14:02
原因: RestTemplate依赖ClientHttpRequestFactory对象,无法直接注入。 报错日志 : Description: Field rt in com.xxx.xxx.controller.xxxxxController required a bean of type ‘org.springframework.web.client.RestTemplate’ that could not be found. The injection point has the following annotations: - @org.springframework.beans.factory.annotation.Autowired(required=true) Action: Consider defining a bean of type ‘org.springframework.web.client.RestTemplate’ in your configuration. 解决方法: 在springBoot启动类增加RestTemplate的bean。如下: public class ServerApplication { public static void main(String[] args) { SpringApplication.run

restTemplate遇到的编码问题

喜你入骨 提交于 2020-01-18 05:09:52
背景:之前用restTemplate做网络间的请求,没遇到过问题。今天先是出现了中文乱码的问题,而后又出现了特殊字符丢失的问题,于是查找资料及翻看源码,将问题解决也顺便记录下。 问题一:中文乱码 描述: 在创建课件时,使用GET方法传递类型和标题两个参数到服务器,服务器返回一个课件编号。类型是固定数字1,不存在问题,而标题则是用户输入字符串,也就是任意字符串。发现输入汉字的时候,结果网络传输后在服务器端出现了乱码。输入标题为:开发测试001,结果在服务器上接收到的为:%E5%BC%80%E5%8F%91%E6%B5%8B%E8%AF%95001。 分析: 出现编码问题,那肯定是对涉及到这个标题的编码的位置出现了问题,于是查找涉及到的代码位置: public String createPptSlide(String title) { UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(host + PPT_SLIDE_INSERT); builder.queryParam("businessLineId", PPT_BUSINESS_LINE_ID); builder.queryParam("slideTitle", title); String url = builder.toUriString();

Ribbon负载均衡原理学习记录

旧街凉风 提交于 2020-01-17 04:24:41
ribbon项目通过RestTemplate发起微服务请求,但是知道的都是知道RestTemplate是spring自带的 那么和ribbon有什么关系呢? 标识.png 我们找到了@LoadBalanced标注的负载均衡标识 点进去 loadbalanced.png @Retention(RetentionPolicy.RUNTIME) ps:这里标识指的是 当编译完成后 运行保留 在jvm中运行 可以被反射调用 注意上面的绿色注释LoadBalancerClient来配置它 打开LoadBalancerClient类 里面有三个方法 image.png 同时继承了ServiceInstanceChooser 类 字面意思 服务选择实例 public interface LoadBalancerClient extends ServiceInstanceChooser { /** * execute request using a ServiceInstance from the LoadBalancer for the specified * service * @param serviceId the service id to look up the LoadBalancer * @param request allows implementations to

.SpringCloud 的搭建(2)

喜夏-厌秋 提交于 2020-01-16 18:55:13
1.SpringCloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、负载均衡、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。另外说明spring cloud是基于Springboot的,所以需要开发中对Springboot有一定的了解。 2.服务提供者与消费关系   就是我我们常说的消费者和生产者   生产者:提供服务给消费者调用   消费者:调用生产者提供的服务,从而实现自身的功能模块 3.服务注册中心Eureka   与duboo类似,duboo我们一般选择zookeper做服务的注册中心,而springcloud是使用Eureka做服务注册中心的。他的作用是就是服务注册与服务发现。以下是比较官方的说明      官方的介绍在这里 Eureka wiki 。Eureka是Netflix开源的一个RESTful服务,主要用于服务的注册发现。Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客                            户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量

java调用http接口, get post请求

巧了我就是萌 提交于 2020-01-16 13:17:08
最近公司派我出差与乙方公司对接接口,开发了将近大半年的App,突然有冲突,所以整合一下,此处省略十万八千字...... 言归正传,怎么通过java调用别人写的接口了?我们在网上看到大部分都是有点麻烦的,其实我们可以通过 RestTemplate 进行开发, 常用的http基本请求方式都有 Get,Post ,Put ,Delete,等等 我这里的是post请求,参数中含有 list 的,map传参 首先我们创建一个配置类 package com.japhet.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; @Configuration(value = "config2") public class Config { @Bean public RestTemplate restTemplate(){ return new RestTemplate(); } } @Resource private RestTemplate restTemplate; // 核心 public String

Why my rest endpoint receives empty dto

烈酒焚心 提交于 2020-01-16 04:54:06
问题 I am trying to post pojo to rest endpoint with RestTemplate Dto dto = new Dto(); dto.setPhone("12313"); RestTemplate restTemplate = new RestTemplate(); restTemplate.postForObject(new URI("http://localhost:8080/test"), dto, Dto.class); but I receive empty dto on the server side @RequestMapping(value = "/test") @ResponseBody public DTO test123(DTO dto) { System.out.println(dto.getPhone()); // empty return dto; } The Dto is simple pojo public class Dto { private String phone; public String

7.Spring-Cloud服务容错保护之Hystrix初探

霸气de小男生 提交于 2020-01-15 09:23:30
在微服务架构中,存在着多个服务单元,若一个单元出现故障,就很容易因依赖关系而出现故障的蔓延,最终导致整个系统的瘫痪,这样的架构相较传统的架构更加不稳定,为了解决这样的问题,产生了断路器等一系列的服务保护机制。 "断路器"本身是一种开关装置,用于在电路上保护线路过载,当线路中有电器发生短路,"断路器"能够及时切断故障电路,防止发生过载、发热甚至起火等严重后果。 分布式架构中,断路器模式的作用也是类似的,当某个服务单元发生故障(类似于用电器发生短路)之后,通过断路器的故障监控(l类似熔断器保险丝),向调用方返回一个错误响应,而不是长时间的等待。这样就不会使得线程因调用故障服务被长时间占用不释放,避免了故障在分布式系统的蔓延。 针对上述问题,SpringCloudHystrix实现了断路器、线程隔离等一系列服务保护功能。它也是基于Netflix的开源框架Hystrix实现的,该框架的目标在于通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供强大的容错能力。Hystrix具备服务降级、服务熔断、线程和信号隔离、请求缓存合并以及服务监控等强大的功能。 -----来自《SpringCloud微服务实战》 ​ 上图为正常的微服务调用 ​ 当某个服务出现故障Hystrix回退防止级联故障,较低级别的服务中的服务故障可能导致用户级联故障。当对特定服务的检测达到一定阈值时

WebFlux系列(六)WebClient VS RestTemplate

青春壹個敷衍的年華 提交于 2020-01-15 04:17:03
#Java#Spring#WebFlux#WebClient#RestTemplate# WebClient和RestTemplate性能比较 视频讲解: https://www.bilibili.com/video/av82675791/ 服务器端 WebfluxServerApplication.java package com.example.webfluxserver; import lombok.extern.log4j.Log4j2; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @Log4j2 @SpringBootApplication public class WebfluxServerApplication extends BaseApplication { public static

SpringCloud入门

旧街凉风 提交于 2020-01-14 04:44:50
Springcloud简介 Spring Cloud是一系列框架的有序集合,基于SpringBoot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装以外,还有一些选型中立的开源组件。 SpringCloud利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发, SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现,断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等它们都可以用SpringBoot的开发风格做到一键启动和部署。 SpringBoot并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 SpringBoot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系约开发工具包。 简单来说 SpringCloud就是微服务一条龙解决方案。和SpringBoot一个套路的东西。两个加起来就是让你写代码更简单。屏蔽了复杂的实现。 分布式应用 随着互联网 应用的普及,在大数据、高并发的环境下,我们的系统架构需要面对更为严苛的挑战, 我们需要一套新的架构,它起码能满足以下要求: 高性能:这是应用程序的基本要求。 独立性