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

    }
}

Java Spring Boot项目调用第三方接口通常涉及以下几个步骤: 1. **添加依赖**:首先,你需要在项目的pom.xml文件添加对第三方API库的依赖。例如,如果你要调用的是HTTP RESTful API,可以使用`spring-boot-starter-web`或者`com.squareup.retrofit2:retrofit`等库。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 或者使用Retrofit --> <dependency> <groupId>com.squareup.retrofit2</groupId> <artifactId>retrofit</artifactId> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> </dependency> ``` 2. **配置RestTemplate或Retrofit**:Spring Boot提供了`RestTemplate`用于发送HTTP请求,而Retrofit则是一个强大的客户端库。以下是配置Retrofit的例子: ```java @Configuration public class ApiServiceConfig { @Bean public OkHttpClient httpClient() { return new OkHttpClient(); } @Bean public Retrofit retrofit(OkHttpClient client) { return new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) .client(client) .build(); } @Bean public YourApiService yourApiService(Retrofit retrofit) { return retrofit.create(YourApiService.class); } } ``` 其,`YourApiService`是你自定义的接口类,对应第三方API的公共方法。 3. **调用接口**:有了服务实例后,你可以通过注入到需要使用的类,然后像操作本地方法一样调用它: ```java @Service public class YourService { private final YourApiService apiService; @Autowired public YourService(YourApiService apiService) { this.apiService = apiService; } public void fetchData() { Call<ApiResponse> call = apiService.getSomeData(); call.enqueue(new Callback<ApiResponse>() { // 处理响应... }); } } ```
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值