解决服务间调用的三种传统方式
第一种方法:使用HttpRequest第三方工具
第一步:pom依赖
<dependency><groupId>com.github.kevinsawicki</groupId><artifactId>http-request</artifactId><version>6.0</version>
</dependency>
第二步:在代码中直接使用HttpRequest类
String body = HttpRequest.post(new StringBuilder(GuojiaoInfo.guojiaoHttp).append("facsp/auth/AuthLogin")).contentType(MediaType.APPLICATION_JSON_UTF8_VALUE).send(JSON.toJSONString(param)).body();
如果是发post请求,就调用
HttpRequest.post()方法如果发get请求,就调用
HttpRequest.get()方法。
第二种方法:使用RestTemplate(Spring框架封装)
springcloud中服务间两种restful调用方式
RestTemplate和Feign
RestTemplate是一个Http客户端,
使用RestTemplate的几种方式:
一、RestTemplate template = new RestTemplate();使用服务ip或者域名访问
二、使用LoadBalancerClient的choose()获得ServiceInstance
三、注入RestTemplate bean,使用服务名称访问
第三种方法:使用HttpClient(Apache提供)
代码示例:
public static int sendToSanMingJSON(String url, String paramJson) throws Exception {int status;CloseableHttpClient httpClient = HttpClients.createDefault();HttpPost httpPost = new HttpPost(SANMING_SERVICE_URL+url);logger.debug("三明服务地址是==> "+SANMING_SERVICE_URL+url);
// ArrayList<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>();
// parameters.add(new BasicNameValuePair("Connection", "keep-alive"));
// parameters.add(new BasicNameValuePair("Content-Type", "application/json"));
// parameters.add(new BasicNameValuePair("Accept-Encoding", "gzip"));
// parameters.add(new BasicNameValuePair("Accept-Charset", "utf-8"));
// parameters.add(new BasicNameValuePair("Accept", "*/*"));httpPost.setHeader("Connection","keep-alive");httpPost.setHeader("Content-Type","application/json");httpPost.setHeader("Accept-Encoding","gzip");httpPost.setHeader("Accept-Charset","utf-8");StringEntity requestEntity = new StringEntity(paramJson,"utf-8");requestEntity.setContentEncoding("UTF-8");httpPost.setEntity(requestEntity);String jsonData=null;try {
// httpPost.setEntity(new UrlEncodedFormEntity(parameters));CloseableHttpResponse response = httpClient.execute(httpPost);jsonData = EntityUtils.toString(response.getEntity(), Charset.forName("utf-8"));} catch (Exception e) {logger.info("调三明服务异常 ==> "+e.getMessage());}Map map = JSON.parseObject(jsonData);status = Integer.parseInt(map.get("code").toString());return status;}
解决服务间调用的三种传统方式相关推荐
- Tomcat介绍及三种启动方式的区别
一.Tomcat的下载 二.Tomcat目录说明 三.Tomcat常用命令 四.Tomcat服务的安装 五.Tomcat启动的三种方式 六.三种启动方式的区别 七.Tomcat端口占用问题 一.Tom ...
- spring-Cloud-netflix-快速入门(三)-服务间调用
目录 环境准备 服务结构 基于(Eureka)服务注册中心的服务间调用 RestTemplate OpenFeign pom依赖 新建客户端类 消费者通过客户端类调用生产者接口 环境准备 使用上一篇的 ...
- 怎么看调用的接口_SpringCloud服务间调用
本篇简介 在上一篇我们介绍了SpringCloud中的注册中心组件Eureka.Eureka的作用是做服务注册与发现的,目的是让不同的服务与服务之间都可以通过注册中心进行间接关联,并且可以通过注册中心 ...
- 再见 Feign!推荐一款微服务间调用神器,跟 SpringCloud 绝配!
在微服务项目中,如果我们想实现服务间调用,一般会选择Feign.之前介绍过一款HTTP客户端工具Retrofit,配合SpringBoot非常好用!其实Retrofit不仅支持普通的HTTP调用,还能 ...
- Spring Cloud微服务之Feign——声明式服务间调用
目录 写在前面 服务间调用常见的方案 方案一:HttpClient 方案二:RestTemplate 方案三:Feign 框架版本问题及可能遇到的坑 搭建服务注册中心 搭建服务1--service-a ...
- 线程间通信的三种方法 (转)
http://www.cnblogs.com/puxidun/archive/2009/12/06/1618142.html 线程间通信的三种方法 多线程通信的方法主要有以下三种: 1.全局变量 进 ...
- 服务间调用要通过网关吗_Asp.Net Boilerplate微服务实战(二)架构解析
这一章节,我来介绍一下Asp.Net Boilerplate框架在微服务开发中所用到的技术及其大体的组织架构.由于本系列仅讨论ABP框架在微服务架构下的应用方案,不涉及具体的业务逻辑,所以在文中,不讨 ...
- linux设置开机自启服务,linux设置服务开机自启动的三种方式
linux设置服务开机自启动的三种方式 这里介绍一下linux开机自动启动的几种方法,共计3种,大家可以借鉴一下!经验里面以centos 5.3系统为例! 方法1:.利用ntsysv命令进行设置,利用 ...
- vbs执行ctrl+空格_VBS中解决路径带空格的三种方法
vbs中,如果需要运行的程序中带有空格,按照通常的方式往往会提示错误,其实有两种形式不同的解决方法: 在应用程序前后分别加三个双引号,代码如下: Set wshell=CreateObject(&qu ...
最新文章
- 2022-2028年中国康养地产行业市场需求前景及投资战略分析报告
- 在VMWare中配置SQLServer2005集群 Step by Step(四)——集群安装
- python数据文件读写
- Zynq7000术语PL,PS,APU,SCU介绍
- Java必刷100题
- 利用Jquery处理跨域请求
- c语言 文件游程统计,游程 码表 如何形成
- 资源丨2200万室内场景数据集,包含语义、全景、灯光等十余种效果
- 【转】 TechED2010与我(三) —— 初识云计算
- AD9如何设置原点位置
- 给我一个支点,我要撬动地球。
- 桌面版docker安装搭建
- BIP与Siebel系统集成
- gis环境设置在哪_怎样解决GIS长距离母线筒的位移问题?
- 全局函数声明和静态函数声明
- C++程序设计同步实践宝典——前言
- android imageview stretchblt,想知道Bmp图像的缩小放大用Tcanvas.StretchDraw还是用StretchBlt函数?(50分)...
- 老股民箱底翻出发黄纸质股票 如今价值超过20万
- 成都榆熙:商家怎样提升店铺自然流量?
- faker假数据php,Yii2 使用 faker 生成假数据
热门文章
- BERT源码分析(PART III)
- 爱可可推荐!关于竞赛思路,方法和代码实践,数据竞赛Baseline开源分享!
- 报告分析|2021移动社交行业有哪些新风向?
- 网易智慧企业 Node.js 实践(3)| 灰度环境和应用监控
- 移动IM开发指南2:心跳指令详解
- 项望烽:移动 IM 开发之心跳​
- LeetCode.每日一题今日份_392.判断子序列
- 网红咖啡店的最后一晚:五道口的罗曼蒂克如何消亡
- 电动垂直起降飞机已经完成测试,就差一张飞行执照即可合法升空
- 百度地图的实现,IIS6.0,.net4.0 无法使用POST和GET