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

java springboot中调用第三方接口「建议收藏」调用第三方接口,记录下自己写的不然忘记。依然是废话不喜欢多说,上代码:application.yml配置server:port:7888servlet:context-path:/genetomcat:remote-ip-header:x-forward-foruri-encoding:UTF-8max-threa…

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

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

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"));
        }

    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • serdes知识详解_discussed是什么意思

    serdes知识详解_discussed是什么意思理解SerDesFPGA发展到今天,SerDes(Serializer-Deserializer)基本上是标配了。从PCI到PCIExpress,从ATA到SATA,从并行ADC接口到JESD204,从RIO到SerialRIO,…等等,都是在借助SerDes来提高性能。SerDes是非常复杂的数模混合设计,用户手册的内容只是描述了森林里面的一棵小树,并不能够解释SerDes是怎么工作

    2025年8月9日
    4
  • VMware虚拟机开启导致宿主机蓝屏

    VMware虚拟机开启导致宿主机蓝屏开启虚拟机的虚拟化后,运行VMware中虚拟机导致win10蓝屏备注;win10家庭中文版20H2+VMware16.0由于需要开启虚拟化功能,运行VMware中的eve虚拟机。且eve虚拟机也要开启虚拟化才能运行qemu镜像。1.但是开启eve的虚拟化后,虚拟机无法打开,解决方案:1.cmd管理员身份打开,输入Msinfo32,查看是否关闭基于虚拟化的安全性。如果未关闭输入bcdeditset/hypervisorlaunchtypeoff,然后重启。下面在控制面板取消勾选

    2022年8月21日
    18
  • Kotlin与Java的异同(一)

    Kotlin与Java的异同(一)Kotlin简介Kotlin是一种针对Java平台的新编程语言。Kotlin简洁、安全、务实,并且专注于与Java代码的互操作性。它几乎可以用在现在Java使用的任何地方:服务端开发、Android应用等等。Kotlin可以很好地和所有现存的Java库和框架一起工作,而且性能和Java旗鼓相当。Kotlin特点:Kotlin是静态类型语言并支持类型推导,允许维护正确性与性能的同时保…

    2022年7月7日
    46
  • 《数据结构》爆1133类和1134同学链接

    《数据结构》爆1133类和1134同学链接

    2022年1月9日
    58
  • c# 键盘钩子

    c# 键盘钩子usingSystem;usingSystem.Collections.Generic;usingSystem.Diagnostics;usingSystem.Runtime.InteropServices;usingSystem.Text;namespaceKeyboardHookPro{publicclassScanerHook{publicdelegatevoidScanerDelegate(ScanerCodescodes)

    2022年6月10日
    30
  • 浙江:9月起中小学增加体育活动时间

    浙江:9月起中小学增加体育活动时间  新华网杭州8月23日电(记者屈凌燕)为保证小学生每天1小时体育活动时间,浙江省教育厅日前对中小学教学计划作出调整,从9月的新学年起,中小学增加体育活动时间,例如小学1、2年级体育课程由原每周3课时增至4课时。  从新学年起,…

    2022年5月13日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号