之前接到个项目,远程调用其他公司的接口,因为只是简单的项目,所以使用了RestTemplate 调用接口: 在service层实现调用:
public List<GroupVo> GetxxxInfo() {
//创建 RestTemplate ,也可以设置成全局变量
RestTemplate restTemplate =new RestTemplate();
//自定义的请求实体
BaseRequest request=new BaseRequest() ;
//需要在 headers 设置一些 参数
HttpHeaders requestHeaders = new HttpHeaders();
//这里使用的json格式 ,若不加则可能会有异常
requestHeaders.setContentType(MediaType.APPLICATION_JSON);
//将请求的参数实体放在这里
HttpEntity<BaseRequest> requestEntity = new HttpEntity<BaseRequest>(request, requestHeaders);
//远程api接口
String url="http://xxxx.xxxx.cn/xxxx/xxx/xxxx";
//使用 http post 请求,用postForObject ,GET请求不一样
//str 是接收的 字符串,返回类型一般也是响应式结构,看公司吧
String str =restTemplate.postForObject(url,requestEntity,String.class);
//ReceiveBasic 也是自定义的,主体也是 响应式结构
ReceiveBasic myclass = JSONObject.parseObject(str , ReceiveBasic.class);
//这里 code状态为0 是成功的意思,有的是200,
// if (myclass.getCode() !=0 ){
// log.error(myclass.getMsg());
// }
//info 是信息主体,这里是String类型
String info =myclass.getInfo();
// GroupVo 是返回的消息主体的实体类
List<GroupVo> list = JSON.parseArray(info, GroupVo.class);
return list;
}
}
返回类型是 响应式结构:
/**
* 接收消息的 基本类
*/
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ReceiveBasic {
//错误编号
private Integer code;
//错误说明
private String msg;
//返回的类信息
private String info;
//总页数
private String pagecount;
//总数量
private String totalcount;
}
json用的是:
<!-- 阿里JSON解析器 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>${fastjson.version}</version> </dependency>