第三方接口"/>
java springboot中调用第三方接口
调用第三方接口,记录下自己写的不然忘记。依然是废话不喜欢多说,上代码:
application.yml配置
server:port: 7888servlet:context-path: /gene
tomcat:remote-ip-header: x-forward-foruri-encoding: UTF-8max-threads: 10background-processor-delay: 30
system:#第三方接口huiCalculatedOrderUrl: http://*******
工具类:
@Component
@Data //简写get set 的注解
@ConfigurationProperties(prefix="system") //接收application.yml中的myProps下面的属性
public class MyProps {public String huiCalculatedOrderUrl;}
调用的Controller:
@Slf4j
@RestController
@RequestMapping("/huiCalculatedOrder")
public class HuiCalculatedOrderController {//可以用 spring boot 的restTemplate 但是感觉 hutool 的 工具类已经封装好的,比较方便@Autowiredprivate RestTemplate restTemplate;@Autowiredprivate MyProps myProps;/*** 授权 获取第三方的token * @throws Exception*/@PostMapping("/login")public String getHuiCalculatedOrderToken() throws Exception {//把第三方账号密码封装到mapMap<String,Object> paramsMap=new HashMap<String,Object>();paramsMap.put("username", "123");paramsMap.put("password", "123");String tokenStr="";// 直接丢地址 和账号密码获取第三方的token,顺便踹下错误,方便甩锅try {tokenStr= HttpUtil.post(myProps.getHuiCalculatedOrderUrl()+"/auth2/token",paramsMap);} catch (Exception e) {e.printStackTrace();throw new Exception("第三方接口访问异常");}//用fastJson 解析一波 直接返回JSONObject object=JSON.parseObject(tokenStr);System.out.println(JSON.toJSONString(object));String tokenObj = object.getString("token");System.out.println(tokenObj);JSONObject token = JSON.parseObject(tokenObj);System.out.println("token-->"+token.getString("token"));return token.getString("token");}/*** 调用第三方接口,下单* 说明下: ApiReturnObject ApiReturnUtil 是我们自己项目封装的返回 无需理会*/@PostMapping("/order")public ApiReturnObject getgeneOrder(HuiCalculatedOrder huiCalculatedOrder) {//把需要传的参数封装到mapMap<String,Object> paramsMap=new HashMap<String,Object>();paramsMap.put("orderNum",huiCalculatedOrder.getOrderNum());paramsMap.put("checkNum",huiCalculatedOrder.getCheckNum());String post = null;try {//因为第三方规定:header 需要传 token , 所以用下面的链式构建//post = HttpUtil.post(myProps.getHuiCalculatedOrderUrl() + "/gene/order/create", paramsMap);//链式构建请求,用的是hutool 工具类post = HttpRequest.post(myProps.getHuiCalculatedOrderUrl() + "/gene/order/create").header("token", getHuiCalculatedOrderToken()) //value 是 上面获取的token.form(paramsMap).timeout(20000).execute().body();}catch (Exception e){e.printStackTrace();return ApiReturnUtil.error("第三方接口错误",e.getMessage());}log.info(post);JSONObject jsonbody= JSON.parseObject(post); //使用了fastJson 工具类if ("00".equals(jsonbody.getString("errorCode")) ){return ApiReturnUtil.success("下单成功",post);}else {return ApiReturnUtil.error(jsonbody.getString("errorMessage"));}}
}
更多推荐
java springboot中调用第三方接口
发布评论