创建入参实体类 Paramter.java
import lombok.Data;
/**
* <p>Java class for kmReviewParamterForm complex type.
*/
@Data
public class Paramter {
private String name;
private String id;
private String localUrl;
}
创建接口 IApiProxyService.java
import com.bean.oaflow.ParamterForm;
import com.bean.oaflow.Paramter;
import com.common.constants.ResultMap;
import java.io.UnsupportedEncodingException;
/**
* <p>
* 调用rest接口
* </p>
*
* @author tenglong
* @since 2022/7/14 15:01
*/
public interface IApiProxyService {
/**
* 表单入参格式 调用
*
* @param param param
* @return ResultMap
*/
ResultMap addReview(ParamterForm param) throws UnsupportedEncodingException;
/**
* JSON入参格式 调用
*
* @param param param
* @return
*/
ResultMap approve(Paramter param) throws UnsupportedEncodingException;
}
接口实现 ApiProxyServiceImpl.java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.bean.oaflow.AttachmentForm;
import com.bean.oaflow.KmReviewParamterForm;
import com.bean.oaflow.NcParamter;
import com.common.constants.ResultMap;
import com.service.IApiProxyService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.io.UnsupportedEncodingException;
import java.util.List;
/**
* <p>
* 第三方rest 接口 调用
* </p>
*
* @author tenglong
* @since 2022/7/14 15:05
*/
@Service
public class ApiProxyServiceImpl implements IApiProxyService {
private final RestTemplate restTemplate = new RestTemplate();
// nacos 接口代理 url 配置
@Value("${oa-streamsets.host}")
private String OA_HOST;
// nacos 接口代理 url 配置
@Value("${nc-streamsets.host}")
private String NC_HOST;
// 表单入参格式调用
@Override
public ResultMap addReview(ParamterForm param) throws UnsupportedEncodingException {
final String url = OA_HOST + param.getLocalUrl();
// 表单入参格式调用
MultiValueMap<String, Object> wholeForm = new LinkedMultiValueMap<>();
wholeForm.add("id", param.getFdId());
wholeForm.add("name", param.getAuthAreaId());
HttpHeaders headers = new HttpHeaders();
// 如果EKP对该接口启用了Basic认证,那么客户端需要加入
// addAuth(headers,"yourAccount"+":"+"yourPassword");是VO,则使用APPLICATION_JSON
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
// 必须设置上传类型,如果入参是字符串,使用MediaType.TEXT_PLAIN;如果
HttpEntity<MultiValueMap<String, Object>> entity = new HttpEntity<MultiValueMap<String, Object>>(wholeForm, headers);
// 有返回值的情况 VO可以替换成具体的JavaBean
ResponseEntity<String> obj = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);
return ResultMap.setResultMap("请求结果", obj.getStatusCode().value() + "", obj.getBody());
}
// JSON 入参格式调用
@Override
public ResultMap approve(Paramter param) {
final String url = NC_HOST + param.getLocalUrl();
// 如果EKP对该接口启用了Basic认证,那么客户端需要加入
// addAuth(headers,"yourAccount"+":"+"yourPassword");是VO,则使用APPLICATION_JSON
// 必须设置上传类型,如果入参是字符串,使用MediaType.TEXT_PLAIN;如果
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json;charset=UTF-8");
// headers.setContentType(MediaType.APPLICATION_JSON);
// JSON 入参格式调用 JSONObject.toJSON(param)
HttpEntity<Object> entity = new HttpEntity<>(JSONObject.toJSON(param), headers);
// 有返回值的情况 VO可以替换成具体的JavaBean
ResponseEntity<String> obj = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);
JSONObject body = JSON.parseObject(obj.getBody());
return ResultMap.setResultMap(body.getString("msg"), body.getString("code"), null);
}
}