java springboot中调用第三方接口

这里写自定义目录标题


调用第三方接口,记录下自己写的不然忘记。依然是废话不喜欢多说,上代码:
application.yml配置

server:
port: 7888
servlet:
context-path: /gene
tomcat:

remote-ip-header: x-forward-for
uri-encoding: UTF-8
max-threads: 10
background-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 的 工具类已经封装好的,比较方便
@Autowired
private RestTemplate restTemplate;

@Autowired
private MyProps myProps;

/**
 * 授权 获取第三方的token 
 * @throws Exception
 */
@PostMapping("/login")
public String getHuiCalculatedOrderToken() throws Exception {
//把第三方账号密码封装到map
    Map<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) {
//把需要传的参数封装到map
    Map<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"));
    }

}

}

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值