# 高开应用远程调用另一个应用接口
# 1.场景介绍
本地高开应用,通过远程调用接口的方式,在“AFCenter“中创建“产品经理”的角色。
本文以上述场景,讲解在高开应用中远程调用另一个应用的接口的实现方式。
# 2.效果展示
# 3.操作步骤
# 3.1开发产品管理的微服务应用
参考文档“开发逻辑流代码的EOS服务”,文档地址:
开发逻辑流代码的EOS服务 (opens new window)
开发完成后,结构如下:
# 3.2获取远程调用接口
通过swagger接口文档,获取AFCenter的“角色管理-新增角色”的API接口。文档地址:
<!--IP和port换成AFCenter后端所在地址-->
http://IP:port/swagger-ui.html#/角色管理/createUsingPOST_19
# 3.3远程调用的实现
在com.primeton.eos.rest.service构建包-运算-Java-com.primeton.eos.rest.service下创建CreatAfcRole类。
代码如下:
package com.primeton.eos.rest.service;
import com.eos.system.utility.JsonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import com.primeton.gocom.afcenter.common.util.RestTemplateHelper;
import org.springframework.web.client.RestTemplate;
import javax.annotation.PostConstruct;
// 创建AFCenter角色的类
@Service
public class CreatAfcRole{
// 自动装载eos自带远程工具RestTemplateHelper
@Autowired
public RestTemplateHelper restTemplateHelper;
// @PostConstruct注解功能:应用启动时自动执行
@PostConstruct
public void init() {
// ”创建角色“的请求路径
String url = "http://localhost:28079/api/afc/roles";
//AFCenter平台的身份认证
String Authorization = "41B7267871AAEC1B8E0A76B88D39D0BD";
// ”创建角色“请求请求头
HttpHeaders headers = new HttpHeaders();
// 指定Content-Type:application/json
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Authorization", Authorization);
// ”创建角色“请求的请求体
String requestBody = "{\n" +
" \"role\":{\n" +
" \"code\":\"Project-Manage\",\n" +
" \"name\":\"产品经理\",\n" +
" \"types\":\"platform\"\n" +
" }\n" +
"}";
// 实例化包含请求头和请求体的HttpEntity
HttpEntity<?> requestEntity = new HttpEntity<>(requestBody, headers);
// 发起远程调用请求
String response = post(url, requestEntity, String.class);
// 处理远程调用的响应
System.out.println("远程调用成功");
}
// eos工具自带方法
public <T> T post(String url, HttpEntity<?> requestEntity, Class<T> responseType) {
HttpMethod method = HttpMethod.POST;
return this.execute(url, method, requestEntity, responseType);
}
// eos工具自带方法
public <T> T execute(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) {
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> rspEntity = restTemplate.exchange(url, method, requestEntity, String.class, uriVariables);
return responseType != null && !Void.class.equals(responseType) ? JsonUtil.toObject((String)rspEntity.getBody(), responseType) : null;
}
}
# 3.4启动应用
通过com.primeton.eos.project.boot-Java-com.primeton.eos.project-Application.java类-运行方式-Java应用程序,启动应用。
启动后可以看到日志中输出远程调用成功。
若出现下图报错,请更换最新的身份认证Authorization值到CreatAfcRole类的Authorization变量。