前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java springboot中调用第三方接口「建议收藏」

java springboot中调用第三方接口「建议收藏」

作者头像
全栈程序员站长
发布2022-09-05 10:06:36
2.5K0
发布2022-09-05 10:06:36
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

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

application.yml配置

代码语言:javascript
复制
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://*******

工具类:

代码语言:javascript
复制
@Component  
@Data  //简写get  set 的注解
@ConfigurationProperties(prefix="system") //接收application.yml中的myProps下面的属性  
public class MyProps {
	public String huiCalculatedOrderUrl;
	}

调用的Controller:

代码语言:javascript
复制
@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"));
        }

    }
}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135659.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月4,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档