SpringBoot-RestTemplate如何实现调用第三方API

目录
  • 1.在build.grdle加入依赖
  • 2.在config包下创建一个RestTemlateConfig
  • 3.在model包下创建一个新的包
  • 4.Constans类下将调用接口的AppKey值宏定义
  • 5.在controller包下创建一个
  • 6.用Postman调用接口,验证是否成功

1.在build.grdle加入依赖

implementation('org.springframework.boot:spring-boot-starter-web')

2.在config包下创建一个RestTemlateConfig

配置好相关信息

package com.qiubao.school.api.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestTemplateConfig {
    @Bean
    public RestTemplate restTemplate(ClientHttpRequestFactory factory){
        return new RestTemplate(factory);
    }
    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        factory.setConnectTimeout(15000);
        factory.setReadTimeout(5000);
        return factory;
    }
}

3.在model包下创建一个新的包

“JuHe”,然后包里创建一个新的类:JuheResult 【Art+insert】选择CsonFormat

4.Constans类下将调用接口的AppKey值宏定义

package com.qiubao.school.api.common;
public interface Constants {
    String JUHE_KEY         = "e80611926aa6321048bde9ea73d11190";
}

5.在controller包下创建一个

新的类SpringRestTemplateController(调用第三方的API,浏览器模拟get请求,postman模拟post请求)

package com.qiubao.school.api.controller;
import com.alibaba.fastjson.JSONObject;
import com.qiubao.school.api.common.Constants;
import com.qiubao.school.api.model.Article;
import com.qiubao.school.api.model.juhe.JuheResult;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("news")
public class SpringRestTemplateController {
    @Autowired
    private RestTemplate restTemplate;
    /***********HTTP GET method*************/
    @GetMapping("/testGetApi")
    public JuheResult getJson(
            @RequestParam(value = "type", required = false) String type
    ){
        type = StringUtils.isEmpty(type)?"top":type;//定义为可以为空
                                                    // 将调用接口的Key值宏定义一个名字(Constants类下)
        String url="http://v.juhe.cn/toutiao/index?type="+type+"&key=" + Constants.JUHE_KEY;
                                                    //将Jason格式转换为对象(增强可读性、易于后期数据的更改和增删)
        JuheResult result = restTemplate.getForObject(url, JuheResult.class);
        return result;
    }
//将调用的Api的Jason数据格式修改为需要的Jason数据格式[用到JuheResult方法]
    private List<Article> convertJuhe2Article(JuheResult result) {
        List<Article> articles = new ArrayList<>();
        for (JuheResult.ResultBean.DataBean dataBean:
             result.getResult().getData()) {
            Article article = new Article(); 

            article.setUniquekey(dataBean.getUniquekey());
            article.setTitle(dataBean.getTitle());
            article.setAuthor_name(dataBean.getAuthor_name());
            article.setCreateDate(dataBean.getDate());

            article.setContent(dataBean.getUrl());
            article.setThumbnail_pic_s(dataBean.getThumbnail_pic_s());
            article.setThumbnail_pic_s02(dataBean.getThumbnail_pic_s02());
            article.setThumbnail_pic_s03(dataBean.getThumbnail_pic_s03());

            article.setCategory(dataBean.getCategory());
            article.getCommentCount();
            article.getLikeCount();
            articles.add(article);
        }
        return articles;
    }
}

6.用Postman调用接口,验证是否成功

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • RestTemplate 401 获取错误信息的处理方案

    目录 RestTemplate 401错误 异常处理 判断是否异常 RestTemplate通过对象传参,response的body为空讨论 代码复现 解决办法一:实体类转成普通类 解决办法二:添加注解 RestTemplate 401错误 调用第三方api 若是服务返回状态码不为200,默认会执行DefaultResponseErrorHandler 异常处理 @Override public void handleError(ClientHttpResponse response) thro

  • 解决RestTemplate 的getForEntity调用接口乱码的问题

    RestTemplate 的getForEntity调用接口乱码 有时候,当我们在SpringBoot项目中使用restTemplate去调用第三方接口时,会发现返回的body中出现了乱码,百度一搜,基本都说是需要将restTemplate中的消息转换器中的StringHttpMessageConverter的字符编码由iso8859-1改为utf-8 ,但是发现并不管用,那么还有一种可能是第三方接口的数据经过GZIP压缩过 默认情况下,restTemplate使用的是JDK的HTTP调用器,并

  • RestTemplate未使用线程池问题的解决方法

    一.问题描述 现场出现springboot服务卡死,无法打开页面现象. 初步分析为服务中使用RestTemplate通信框架,但未使用连接池,如果通信抛出异常(连接失败),连续运行一定时间,导致线程飙升,资源耗尽,服务程序宕机. 二.问题再现 模拟无法通信的微服务地址,修改连接2s/次,启动三个微服务demo进行通信,连续测试2小时,现象可再现: 详细如下图: 启动时线程数: 连接异常提示: 线程飙升: 大量未关闭线程: 线程dump信息: "http-nio-8081-exec-120&quo

  • 解决RestTemplate 请求接收自定义400+ 或500+错误

    目录 RestTemplate 请求接收自定义400+ 或500+错误 场景 原因 解决办法 自定义RestTemplate的ResponseErrorHandler Spring框架中的RestTemplate处理ClientHttpResponse的方式 并不想让它抛异常 无法使用IOC注入的场景下 RestTemplate 请求接收自定义400+ 或500+错误 场景 当服务端自定义400错误返回体时,使用restTemplate 请求接收不到消息体.而我正想根据不同的错误信息做不同的操作

  • 解决使用RestTemplate时报错RestClientException的问题

    目录 使用RestTemplate时报错RestClientException 这是自己封装的一个发送请求的方法 这是自定义的一个http信息Converter RestTemplate的错误处理 问题描述 ErrorHandler 解决办法 使用RestTemplate时报错RestClientException 这是自己封装的一个发送请求的方法 public Map<String, Object> sendRequest(Map<String, Object> body,Str

  • SpringBoot 利用RestTemplate http测试

    目录 SpringBoot RestTemplate http测试 spring-boot有关spring-boot测试的一些问题 具体的测试方法如下 但是有个问题就是 SpringBoot RestTemplate测试Controller 1.功能测试类 2.工具类 SpringBoot RestTemplate http测试 spring-boot有关spring-boot测试的一些问题 这测试的时候主程序没有启动报错.错误如下 ==org.springframework.web.clien

  • RestTemplate自定义ErrorHandler方式

    目录 RestTemplate自定义ErrorHandler RestTemplate实例 三个步骤: SpringBoot 中使用 RestTemplate 自定义 异常处理,捕获最原始的错误信息 RestTemplate 异常处理流程 自定义 RestTemplate 异常处理 设置 RestTemplate 的异常处理类 RestTemplate自定义ErrorHandler 当通过RestTemplate调用服务发生异常时,往往会返回400 Bad Request或500 interna

  • 解决RestTemplate加@Autowired注入不了的问题

    RestTemplate加@Autowired注入不了 1.在启动类加入 如图箭头所示代码: 然后在进行@Autowired发现不报错了. 完美解决 SpringBoot 如何注入RestTemplate 创建一个文件夹 ,我这边习惯于创建config文件夹 将下面的一段代码放到里面 import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotati

  • SpringBoot-RestTemplate如何实现调用第三方API

    目录 1.在build.grdle加入依赖 2.在config包下创建一个RestTemlateConfig 3.在model包下创建一个新的包 4.Constans类下将调用接口的AppKey值宏定义 5.在controller包下创建一个 6.用Postman调用接口,验证是否成功 1.在build.grdle加入依赖 implementation('org.springframework.boot:spring-boot-starter-web') 2.在config包下创建一个RestT

  • Asp.Net Core 调用第三方Open API查询物流数据的示例

    在我们的业务中不可避免要与第三方的系统进行交互,调用他们提供的API来获取相应的数据,那么对于这样的情况该怎样进行处理呢?下面就结合自己对接跨越速运接口来获取一个发运单完整的物流信息为例来说明如何在Asp.Net Core中通过代码实现.当然在他们的官方网站上面会给出具体的API调用方式以及参数格式,作为调用方只需要根据相应规则来进行编码即可,下面以我们查询某一个具体的发运单的物流信息为例来进行说明. 下面以一个查询路由详细信息为例来进行说明.当前接口主要包括:1 概述. 2 系统参数. 3 

  • 实例详解Java调用第三方接口方法

    目录 一. 通过JDK网络类Java.net.HttpURLConnection 1.java.net包下的原生java api提供的http请求 2.HttpClientUtil工具类 3.第三方api接口 4.测试类 二.通过Apache common封装好的HttpClient 1.引入依赖 2.httpClientUtil 3.第三方api接口 4.测试类 三.通过Spring的RestTemplate 1.引入依赖 2.RestTemplate配置类 3.RestTemplate实现类

  • Python编程调用百度API实现地理位置经纬度坐标转换示例

    目录 1.1,用百度账号登陆百度地图控制台 1.2,创建一个应用,获取 AK 参数 1.3,地理编码.逆地理编码 1.3.1 地理编码 1.3.2 逆地理编码 经纬度坐标转换最常见办法就是调用第三方 API,例如百度.高德地图等服务平台,提供了相应的功能接口,它们的这类技术已经非常成熟啦,准确稳定,关键还是免费的 ~ 本期教程以百度为例(高德的用方类似),介绍一下其用法 1.1,用百度账号登陆百度地图控制台 百度地图开放平台 1.2,创建一个应用,获取 AK 参数 登录控制台之后,选择左侧 应用

  • SpringBoot调用第三方WebService接口的操作技巧(.wsdl与.asmx类型)

    SpringBoot调webservice接口,一般都会给你url如: http://10.189.200.170:9201/wharfWebService/services/WharfService?wsdl http://10.103.6.158:35555/check_ticket/Ticket_Check.asmx 其中.asmx是.net开发提供的webservice服务. 依赖 引入相关依赖: <!-- webService--> <dependency> <gr

  • 在Laravel中使用GuzzleHttp调用第三方服务的API接口代码

    背景:用laravel进行分布式开发,自己写了一个业务系统,还写了一个用户中心和其他的信息中心 现在需要做到前端只需要访问业务系统的API接口也可以获取到其他服务上面的数据 找了很多资料,最后查到了Laravel自带的GuzzleHttp可以达到我的需求 Guzzle中文文档: http://guzzle-cn.readthedocs.io/zh_CN/latest/index.html 引入安装 在composer.json文件的"require"项中加入 "guzzleh

  • Java调用第三方http接口的常用方式总结

    目录 1.概述 在Java项目中调用第三方接口的常用方式有 2.Java调用第三方http接口的方式 2.1 通过JDK网络类Java.net.HttpURLConnection 2.2 通过apache common封装好的HttpClient 2.3 通过Apache封装好的CloseableHttpClient 2.4 通过OkHttp 2.5 通过Spring的RestTemplate 2.6通过hutool的HttpUtil 3.总结 1.概述 在实际开发过程中,我们经常需要调用对方提

  • Java调用第三方接口示范的实现

    在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口. 使用流程 [1]准备工作:在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的restTemplate来调用,上面有调用接口的方法[分为Get和Post方式的有参和无参调用]: package com.njsc.credit.util; import java.io.IOException; import java.net.URI; import java.util.ArrayL

  • SpringBoot RestTemplate GET POST请求的实例讲解

    一)RestTemplate简介 RestTemplate是HTTP客户端库提供了一个更高水平的API.主要用于Rest服务调用. RestTemplate方法: 方法组 描述 getForObject 通过GET检索表示形式. getForEntity ResponseEntity通过使用GET 检索(即状态,标头和正文). headForHeaders 通过使用HEAD检索资源的所有标头. postForLocation 通过使用POST创建新资源,并Location从响应中返回标头. po

随机推荐