调用第三方接口

SpringBoot-RestTemplate实现调用第三方API 1.在build.grdle加入依赖 implementation('org.springframework.boot:spring-boot-starter-web') 2.在config包下创建一个RestTemlateConfig,配置好相关信息 package com.qiubao.school.api.config; import org.springframework.c... 阅读详情

快速使用:调用第三方接口获取数据(简易版)_myme95的博客-优快云博客_调用第三方接口

controller层

img

 private String jokeApiKey = "40ff81dexxxxxxxxxxxx97a39d39";
 @Autowired
 ApiService apiService;
 /**
      * 京东万象-笑话api
      */
 @GetMapping("/getJoke")
 @ResponseBody
 public Output jokeApi() throws Exception {
     //得到long类型当前时间
     long l = System.currentTimeMillis();
     //new日期对象
     Date date = new Date(l);
     //转换提日期输出格式
     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
     String time = dateFormat.format(date);
 ​
     String api = "https://way.jd.com/showapi/wbxh?time=" + time + "&page=1&maxResult=20&showapi_sign=bd0592992b4d4050bfc927fe7a4db9f3&appkey=" + jokeApiKey;
 ​
     String str = apiService.httpRequest(api);
 ​
 ​
     JSONObject jsonObject = JSON.parseObject(str);
     String code = jsonObject.getString("code");
     if (code == null) {
         throw new Exception("数据获取有误!");
     }
     JSONObject resultJsonObject = jsonObject.getJSONObject("result");
     JSONObject bodyJsonObject = resultJsonObject.getJSONObject("showapi_res_body");
     JSONArray contentListArray = bodyJsonObject.getJSONArray("contentlist");
     List<Item> itemList = JSONArray.parseArray(contentListArray.toJSONString(),Item.class);
     Output output = new Output();
     output.setResult(itemList);
     return output;
 }

service层

在controller层里我说了,我们暂时只需要关注1~4步。

你在controller层里面拼接好了地址以后,就可以把拼接了你appKey、time等等参数的url传给service进行进一步的业务处理,也就是我们真正的调用三方接口的处理逻辑。

img

img

 public String httpRequest(String apiPath) {
     BufferedReader in = null;
     StringBuffer result = null;
     //调用的api的接口地址
     String apiUrl = apiPath;
     try {
         URL url = new URL(apiPath);
         //打开和url之间的连接
         HttpURLConnection connection = (HttpURLConnection) url.openConnection();
         connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
         connection.setRequestProperty("Charset", "utf-8");
         connection.connect();
         result = new StringBuffer();
         //读取URL的响应
         in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
         String line;
         while ((line = in.readLine()) != null) {
             result.append(line);
         }
         return result.toString(); //返回json字符串
     } catch (MalformedURLException e) {
         e.printStackTrace();
     } catch (IOException e) {
         e.printStackTrace();
     } finally {
         try {
             if (in != null) {
                 in.close();
             }
         } catch (IOException e) {
             e.printStackTrace();
         }
 ​
     }
     return null;
 }

这个方法执行成功之后,返回的是一个json字符串。

img

将获取的数据转换为Json对象。

img

img

img

拿到了返回数据之后,你就可以把值一个一个取出来然后存到你的数据库里。当然你的数据库里一定要先有一张对应的表才是。

json包我用的是fastjson,它的maven依赖如下。

 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
 <dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.2.57</version>
 </dependency>

输出类Output的代码(可以根据个人需求做个性化定制~,比如你可以多返回一个errorcode什么的,这都是Ok的):

 import java.io.Serializable;
  
 public class Output implements Serializable {
  
     //serialVersionUID 这个是序列化时要用到的,idea可以自动生成,
     //但是我也不知道怎么生成,可以自己百度一下。这是公司大佬之前
     //封装的(此处感恩大佬又让我学到了新东西!)
     private static final long serialVersionUID = 7247613666080613254L;
  
     //状态码,比如这里定义status默认200,代表接口调用成功。代表网络上的成功而已。
     private int status = 200; 
  
     //code有的人会写成errorCode,是“错误代码”的意思。这是代表业务逻辑上的成功与否‘
     //默认0,代表你的业务逻辑没问题,此次调用成功了。打个比方,你调用接口进行一个“新增”操作,
     //新增成功返回一个code=0代表你此次新增成功了。否则你返回一个code=201(或者其他随便什么
     //只要你喜欢)代表新增失败。
     private int code = 0;  
  
     //错误信息,比如“新增失败!”等
     private String message;
  
    //如果新增成功,就把你想要抛出去的东西放在result里面跑出去。result用Object定义。随便你
    //放什么进去都OK ,String、int、List...  whatever you want
     private Object result;
  
     public int getStatus() {
         return this.status;
     }
  
     public void setStatus(int status) {
         this.status = status;
     }
  
     public int getCode() {
         return this.code;
     }
  
     public void setCode(int code) {
         this.code = code;
     }
  
     public String getMessage() {
         return this.message;
     }
  
     public void setMessage(String message) {
         this.message = message;
     }
  
     public Object getResult() {
         return this.result;
     }
  
     public void setResult(Object result) {
         this.result = result;
     }
  
     public Output() {
     }
  
     public Output(Object result) {
         this.result = result;
     }
  
     public Output(int code, String message) {
         this.code = code;
         this.message = message;
     }
 }

后续问题

今天遇到一个小问题。我调用一个api,那个api的数据提交是form表单。而我之前包括这篇文章写的方法都是以json格式传参数的。所以就出现了问题,当我以json格式的参数去请求一个本应以表单形式提交参数的api,那边防火墙会拦截下来,告诉我参数不合法。

后来我知道了,post方法的参数请求有两种形式:form表单形式(key=value数据格式)和json形式(key:value数据形式)。这两种方式对应的调用方法大同小异。

多线程调用第三方API接口 public void ThreadDemo() { //集合 相当于请求内容 List<String> list = new ArrayList<String>(); list.add("110101198001119833"); list.add("110101198001119876"); list.add("110101198001119892"); ... 阅读详情

相关推荐

java调用第三方接口http工具类

java调用第三方接口http工具类 一、描述        调用第三方接口工具。 二、代码实现 package com.lanshen.utils.lsjavaUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; im...

weixin_46110257的博客 2419

关于Apache httpclient 请求的相关模式

原文出处:https://zhidao.baidu.com/question/713930427607680965.html “Java中的httpclient4.5应该怎么使用” 备记一、所需要的jar包 httpclient-4.5.jar httpcore-4.4.1.jar httpmime-4.5.jar二、实例Java代码 package cn.tzz.apa...

307

调用第三方接口遇到的13大坑

在实际工作中,我们经常需要在项目中调用第三方API接口,获取数据,或者上报数据,进行数据交换和通信。那么,调用第三方API接口会遇到哪些问题?如何解决这些问题呢?这篇文章就跟大家一起聊聊第三方API接口的话题,希望对你会有所帮助。

m0_67597657的博客 1393

调用第三方接口,所有的坑都给你踩过一遍了....

前言在实际工作中,我们经常需要在项目中调用第三方API接口,获取数据,或者上报数据,进行数据交换和通信。那么,调用第三方API接口会遇到哪些问题?如何解决这些问题呢?这篇文章就跟大家一起聊聊第三方API接口的话题,希望对你会有所帮助。1 域名访问不到一般我们在第一次对接第三方平台的API接口时,可能会先通过浏览器或者postman调用一下,该接口是否可以访问。有些人可能觉得多次一举。其实不然。有可...

Java笔记虾 2795

机器学习入门指南:Jupyter Notebook实战

对于机器学习工程师而言,他们更擅长的是算法、模型、数据探索的工作,而对于工程化的能力则并不是其擅长的工作。Jupyter Notebook生成PMML文件1​​​​​​​。Jupyter Notebook生成PMML文件2​​​​​​​。PySpark Notebook建模 -折线图​​​​​​​。TensorFlowNotebook建模​​​​​​​。R Notebook建模 - 散点图​​​​​​​。PySpark Notebook建模​​​​​​​。R Notebook获取训练数据集​​​​​​​。

datacreating的博客 1977

LLC谐振变换器设计实战:从工作原理到参数设计与调试

开关电源设计是电力电子领域的核心技术,其核心目标在于提升效率与功率密度。为实现这一目标,软开关技术应运而生,它通过精心控制开关器件的电压与电流波形,使其在开通或关断瞬间实现零电压或零电流切换,从而从根本上降低开关损耗。LLC谐振变换器正是这一技术的杰出代表,它通过引入谐振网络,巧妙地实现了主开关管的零电压开关和次级整流管的零电流开关。这种拓扑结构在服务器电源、通信设备及高端显示驱动等要求高效率、高功率密度的应用场景中价值显著。本文将以半桥LLC为例,深入剖析其工作模态与增益特性,并系统阐述其参数设计、仿真验

weixin_34129696的博客 564

Java调用第三方接口示范

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

b_bunana的博客 1981

图解B树的原理及操作

本文主要参考:https://blog.youkuaiyun.com/shenchaohao12321/article/details/83243314 1. B树 1.1 B树的定义 B树也称B-树,它是一颗多路平衡查找树。我们描述一颗B树时需要指定它的阶数,阶数表示了一个结点最多有多少个孩子结点,一般用字母m表示阶数。当m取2时,就是我们常见的二叉搜索树。 一颗m阶的B树定义如下: 1)每个结点最多有m-1个关键字。 2)根结点最少可以只有1个关键字。 3)非根结点至少有Math.ceil(m/2)-

jinking01的专栏 3万+

调用第三方接口的三种方式

调用第三方接口到三种方式 链接 Hutool 依赖 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>4.1.0</version> </dependency>      <!-- json依赖 --> <dependency>         

Skiray的博客 6006

基于FPGA的PCIe核系列:FPGA root模式生成工程例子分析(1)

一、 PCIE系统架构 1.1 PCIE分层结构 PCIE结构 1.2 TLP包 四种TLP类型。 Memory (内存空间操作) IO (IO空间操作) Configuration (配置操作) Message (信息操作) 四种类型TLP,如果有需要响应,称为Non-Posted TLP,如果没有需要响应,称为Posted TLP。 TLP包类型 1.2.1 TLP结构 TLP数据格式 1.2.2 Header各个字段的含义 Header格式 ...

huangshanhu的博客 3436

MIKE21桥墩模拟实战:抠网格与构筑物法对比与选型指南

本文详细对比了MIKE21软件中抠网格法与构筑物法在桥墩模拟中的应用,包括操作步骤、适用场景及优缺点分析。通过实际案例数据展示两种方法的精度与效率差异,并提供选型决策树和常见问题解决方案,帮助工程师根据项目需求选择最优模拟方法。

weixin_42656416的博客 326

java调用第三方http接口

企业级开发过程中会遇到很多第三方接口api调用的问题,有的公司自己封装了完整的三方接口调用规范,包括我们自己也有,接下来演示一种简单易懂的调用方法。 主要涉及一下几点: 1.打开和url之间的连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 2.设置通用的请求属性 conn.s...

枫叶 9136

MATLAB下pdf文件操作读取示例

当遇到一些需要大量数据的项目,数据的读取与储存显得尤为重要。怎样把数据从其他格式的文件中读取,并运用到程序中是很多时候我们要解决的问题。对于平常的.txt,和.xlsx文件,MATLAB有对应的函数帮助读取,但是遇到pdf文件时MATLAB很难读取内容。本文以一个操作实例提供了一个从pdf文件中读取数据的方法。

UESTC 五高考3模拟的博客 6561

java调用第三方接口示例

引言:在我们开发的过程中,常常会听到或者接触到第三方接口,那么这个第三方接口到底是什么呢? 简单来说就是一个远程接口,不是在你本机上的,你需要通过远程url去访问调用该接口。许多项目中有明确的要求需要调用第三方接口,因为两边处理的业务可能不太一样,但是要做到数据能够同步。打个比方,你在本地删除了一些数据,但是第三方数据库中却还存在该数据,这时候那就需要调用第三方的接口来进行一个数据删除,到达数据同步的目的。项目中有明确要求需要调用第三方接口的,一般都会有规范的接口调用文档,调用第三方接口时,你只需要根据该接

爱吃鸡腿的明仔 3251

知识图谱实战:从零搭建一个企业级金融风控图谱(附完整代码)

本文提供了一份从零构建企业级金融风控知识图谱的实战指南。通过使用Neo4j图数据库和Python,手把手教你整合多源数据、设计数据模型,并利用Cypher查询与图算法挖掘隐藏的关联风险与欺诈网络,附有完整代码,助力金融科技从业者实现从数据孤岛到全局风险洞察的升级。

weixin_29095587的博客 364

通信原理 | python调制识别数据及代码

数据集包含了从-20dB 到+18dB 总共 20 个信噪比(步长为 2)下的 11 种调制信号, 包括 AM-DSB、 AM-SSB 和 WBFM 三种模拟调制信号,以及 BPSK、 QPSK、 8PSK、 CPFSK、 GFSK、 PAM4、 QAM16 和 QAM64 八种数字调制信号。其中信号的中心频率为 200KHz,采样频率为 1Msamp/s,且每个信噪比下每种调制信号包含 1000 个信号。其中每个信号包含 IQ 两路数据,且每一路数据都包含有 128 个采样点。

若北辰 1758

Java调用第三方接口(http总结)

业务需求: 一般情况下都是 后端提供接口,前端调用,解决需求,但是有的时候为了方便,复用别人的接口(网上的,公共的第三方接口(短信、天气等)),就出现了后端调用后端接口的情况。(类似JavaScript中的ajax一样获取数据,并对数据进行处理) 对比 一般情况: 前端调用后端接口 业务情况: 后端调用后端接口 几种方式总结: 在Java项目中调用第三方接口的方式有: ①通过JDK网络类Java....

希望能解决大家的问题,也欢迎老哥们来骚扰技术交流业务中的问题 8151

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

java如何调用第三方接口

最近在做一个项目,因一些机制问题,需要我用java代码调用第三方接口。因其接口使用的是@RequestBody注入访问对象的,@RequestBody接受收的是一个json格式的字符串,一定是一个字符串。类似于: { “pageNumber”:1, “pageSize”:10 } 这种json字符串访问方式。 要想在java后端代码中访问第三方接口,首先引入maven包。 <dependency> <groupId>org.codehaus.jackson

BigGreySheep的博客 5750

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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-...

Dakar1123的博客 3904

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

python调用第三方接口获取数据_python 接口实现 供第三方调用的例子

python 接口实现 供第三方调用的例子实验环境1.环境问题python 2.7 以上自带的pyunitbottle 作为一个python的简易服务器在python安装目录 打开命令窗口(具体 shift+鼠标右键)执行代码pip install bottle2.写一个bottle服务,也就是所谓的一个接口,供给浏览器调用的接口#接口登陆@route('/login//') #是URL中参数de...

weixin_39943220的博客 2555

SpringBoot 调用第三方的WebService接口

SpringBoot项目需要去调用第三方的WebService接口,推荐使用eclipse2019生成WebService接口的java类,通过生成的java类即可调用(简单、有效、0失误)

kstaaaaa的博客 1577

Java 调用第三方接口方法

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。1、通过统一资源定位器(java.net.URL)获取连接器(java.net.URLConnection)。4、以输入流的形式获取返回内容。.

drnrrwfs的博客 9750

通过Feign远程调用第三方接口

远程调用第三方接口的有几种方法,常用就是用HttpClient等插件,其实SpringCloud的Fegin组件也可以 用于第三方接口调用。 1、引入Maven插件 <!-- feign核心包 --> <dependency> <groupId>io.github.openfeign</grou...

Carson073的博客 4910

Java调用第三方http接口的方式

文章目录1、概述2、java调用第三方http接口的方式2.1 通过jdk网络类java.net.HttpURLConnection2.2 通过apache common封装好的HttpClient2.3 通过Apache封装好的CloseableHttpClient2.4 通过SpringBoot-RestTemplate 1、概述 在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的...

米洛尔的博客 1827

Spring Boot项目中调用第三方接口

本文介绍了在Spring Boot项目中调用第三方RESTful API的完整流程。主要包括四个步骤:首先添加Spring Boot Web或WebFlux依赖;然后配置RestTemplate(同步)或WebClient(异步)客户端;接着在Service层实现具体的接口调用逻辑;最后通过Controller暴露API端点。文章对比了两种HTTP客户端的优缺点,并强调了异常处理、请求头设置、性能优化等重要注意事项,为开发者提供了灵活可靠的第三方接口集成方案。

weixin_56693899的博客 1087
上一篇: Json解析
下一篇: Mybatis插入
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值