首页 > 编程知识 正文

使用SpringBoot调用HTTP接口

时间:2023-11-19 17:50:05 阅读:293749 作者:LODB

本文将详细介绍如何使用 SpringBoot 调用 HTTP 接口,并给出详细的代码示例。

一、创建SpringBoot项目

首先,我们需要创建一个SpringBoot项目。可以使用Spring Initializr快速创建,也可以手动创建。

参考代码示例:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.60</version>
        </dependency>
    </dependencies>

二、调用HTTP接口

1、使用RestTemplate

Spring提供了一个方便的访问REST服务的模板类RestTemplate。

参考代码示例:

    RestTemplate restTemplate = new RestTemplate();
    String result = restTemplate.getForObject(url, String.class);
    System.out.println(result);

2、使用HttpURLConnection

除了Spring的RestTemplate外,我们也可以使用标准Java库中的 HttpURLConnection 来发送 HTTP 请求。

参考代码示例:

    URL url = new URL("http://www.example.com");
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestMethod("GET");

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

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

    System.out.println(response.toString());

3、使用Apache HttpClient

另外一个流行的 Java HttpClient 实现是 Apache HttpClient。

参考代码示例:

    CloseableHttpClient httpClient = HttpClients.createDefault();
    HttpGet httpGet = new HttpGet("http://www.example.com");
    CloseableHttpResponse httpResponse = httpClient.execute(httpGet);
    HttpEntity responseEntity = httpResponse.getEntity();
    String response = EntityUtils.toString(responseEntity);

    System.out.println(response);

三、设置请求参数

1、GET请求设置参数

在使用GET请求时,可直接在URL后拼接参数。

参考代码示例:

    String url = "http://www.example.com?id=1";
    RestTemplate restTemplate = new RestTemplate();
    String result = restTemplate.getForObject(url, String.class);
    System.out.println(result);

2、POST请求设置参数

在使用 POST 请求时,需要将参数封装为一个对象,并通过 HttpEntity 传递给 POST 方法。

参考代码示例:

    JSONObject requestBody = new JSONObject();
    requestBody.put("id", 1);
    requestBody.put("name", "example");

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);

    HttpEntity requestEntity = new HttpEntity<>(requestBody.toJSONString(), headers);

    RestTemplate restTemplate = new RestTemplate();
    String result = restTemplate.postForObject(url, requestEntity, String.class);
    System.out.println(result);

四、处理响应结果

1、处理JSON格式的响应结果

对于 JSON 格式的响应结果,我们需要将其转换为 Java 对象。可以使用第三方库 fastjson 来实现。

参考代码示例:

    RestTemplate restTemplate = new RestTemplate();
    String result = restTemplate.getForObject(url, String.class);

    JSONObject jsonObject = JSON.parseObject(result);
    String name = jsonObject.getString("name");

    System.out.println(name);

2、处理XML格式的响应结果

对于 XML 格式的响应结果,我们可以使用 JAXB(Java API for XML Binding)来将其解析成 Java 对象。

参考代码示例:

    RestTemplate restTemplate = new RestTemplate();
    String result = restTemplate.getForObject(url, String.class);

    JAXBContext jaxbContext = JAXBContext.newInstance(User.class);
    Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
    User user = (User) jaxbUnmarshaller.unmarshal(new StringReader(result));

    System.out.println(user.getName());

五、异常处理

在调用 HTTP 接口时,可能会遇到各种各样的异常情况,比如网络连接异常、HTTP 响应状态码异常等。

参考代码示例:

    try {
        RestTemplate restTemplate = new RestTemplate();
        String result = restTemplate.getForObject(url, String.class);

        JSONObject jsonObject = JSON.parseObject(result);
        String name = jsonObject.getString("name");

        System.out.println(name);
    } catch (HttpStatusCodeException e) {
        System.out.println("HTTP状态码异常:" + e.getStatusCode());
    } catch (RestClientException e) {
        System.out.println("网络连接异常:" + e.getMessage());
    }

六、总结

本文主要介绍了如何使用 SpringBoot 调用 HTTP 接口,包括使用 RestTemplate、HttpURLConnection 和 Apache HttpClient 发送请求,以及如何设置请求参数、处理响应结果和异常处理。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。