【java】springboot请求第三方接口

一、java请求第三方接口

在Java中请求第三方接口通常涉及使用HTTP客户端库来发起请求并处理响应。以下是几种常用的Java库来实现这一目的,包括使用Spring Boot框架和不使用Spring Boot框架的方法。

1. 使用 HttpURLConnection (适用于不使用Spring的Java应用程序)
HttpURLConnection 是Java标准库的一部分,可以用来发送HTTP请求。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpClientExample {

    public static void main(String[] args) throws Exception {
        String url = "https://api.example.com/data";
        URL obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();

        // Optional default is GET
        con.setRequestMethod("GET");

        int responseCode = con.getResponseCode();
        System.out.println("Response Code : " + responseCode);

        BufferedReader in = new BufferedReader(
                new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();

        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        // Print result
        System.out.println(response.toString());
    }
}

2. 使用 OkHttp (适用于不使用Spring的Java应用程序)
OkHttp 是一个高效的HTTP客户端库,非常适合于Android和Java应用程序。

添加依赖:

<!-- Maven -->
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.9.1</version>
</dependency>

示例代码:

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class OkHttpClientExample {

    public static void main(String[] args) throws Exception {
        OkHttpClient client = new OkHttpClient();

        Request request = new Request.Builder()
                .url("https://api.example.com/data")
                .build();

        try (Response response = client.newCall(request).execute()) {
            System.out.println(response.body().string());
        }
    }
}


3. 使用 HttpClient (适用于不使用Spring的Java应用程序)
Java 11 引入了新的 HttpClient API,这是一个非阻塞的客户端,适用于现代的高并发应用。

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class HttpClientExample {

    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(new URI("https://api.example.com/data"))
                .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}

4. 使用 RestTemplate (适用于Spring Boot应用程序)
如果你正在使用Spring Boot或Spring框架,RestTemplate是一个非常好的选择。示例代码:

import org.springframework.web.client.RestTemplate;

public class SpringRestTemplateExample {

    public static void main(String[] args) {
        RestTemplate restTemplate = new RestTemplate();
        String result = restTemplate.getForObject("https://api.example.com/data", String.class);
        System.out.println(result);
    }
}

5. 使用 WebClient (适用于Spring Boot应用程序)
WebClient 是Spring WebFlux中的非阻塞客户端,适用于现代Web服务。

import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;

public class SpringWebClientExample {

    public static void main(String[] args) {
        WebClient client = WebClient.create();
        Mono<String> result = client.get()
                                    .uri("https://api.example.com/data")
                                    .retrieve()
                                    .bodyToMono(String.class);

        result.subscribe(System.out::println);
    }
}

备注:

  • 根据API的要求,你可能需要设置请求头,如 Authorization、Content-Type 等。
  • 处理异常和错误情况,比如网络问题、超时等。
  • 如果API需要身份验证,确保正确配置请求头或URL参数。
二、springboot请求第三方接口

在Spring Boot应用中调用第三方API(即第三方接口)是一种常见的场景,这通常涉及到HTTP请求的发送和响应的处理。Spring Boot提供了几种不同的方式来实现这一目标,下面我将介绍其中的一些方法:

1. 使用RestTemplate
RestTemplate是Spring框架中一个非常强大的工具类,用于发送HTTP请求并接收响应数据。下面是一个简单的示例,展示如何使用RestTemplate调用一个GET类型的API。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class ExternalApiController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/call-api")
    public String callExternalApi() {
        String url = "https://api.example.com/data";
        ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
        return response.getBody();
    }
}


2. 使用WebClient
WebClient是Spring WebFlux项目中的非阻塞异步客户端,适用于现代Web服务。如果你的应用是基于Spring WebFlux的,那么WebClient是一个很好的选择。

import org.springframework.web.reactive.function.client.WebClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;

@RestController
public class ExternalApiController {

    @GetMapping("/call-api")
    public Mono<String> callExternalApi() {
        WebClient client = WebClient.create();
        return client.get()
                     .uri("https://api.example.com/data")
                     .retrieve()
                     .bodyToMono(String.class);
    }
}


3. 使用HttpClient和HttpRequest
如果需要更底层的控制,可以使用HttpClient和HttpRequest,这通常适用于对HTTP协议有更深入需求的情况。

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ExternalApiController {

    @GetMapping("/call-api")
    public String callExternalApi() throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                                          .uri(new URI("https://api.example.com/data"))
                                          .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        return response.body();
    }
}

备注:

  • 确保你的Spring Boot应用中包含了相应的依赖(例如spring-web或spring-webflux)。
  • 如果API需要认证或有特殊的请求头,记得在请求中添加相应的信息。
  • 处理异常和错误情况,比如网络问题、超时等。
  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值