前言

大家好,我是南城、有潇湘,一个有点文学气息的Java小白,如果我得文章对您有所帮助,不胜荣幸!!!

项目场景:

当我们进行微信小程序开发的时候,有时候避免不了需要去和其他项目进行对接,去调用其他项目的接口,但是由于微信小程序规则的限制,前端没办法访问外部链接,这个时候就需要后端对接口进行处理之后将数据交给前端.


问题描述:

①后端如何调用外部接口?
②如何在第三方接口有权限认证的情况下动态处理?


问题分析:

①首先我们确定一下我们需要什么以及我们有什么和没有什么,我们需要的是接口返回的数据,把这个被调用的接口比作一个房子,我们有的就是通往这个房子的路线以及一块敲门砖(条件),我们没有的就是门后屋子里的一切东西我们都不知道.这就好比我们和屋子各是一个服务器,我们需要的是服务器之间的数据交换,那么这个时候io流是不是就可以解决这个问题呢?


解决方案:

对于后端来说,我们可以效仿我们平时写测试类的思路,我们需要搞定被调用需要的东西传给它,然后拿到它返给我们的数据.

@GetMapping("getFcstlnRegion")public  String getFcstlnRegion() throws Exception{URL url= new URL("外部链接");BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));String inputLine;while ((inputLine = in.readLine()) != null)System.out.println(inputLine);in.close();return inputLine;}

我们先写一个简单的io流,试着去访问一下:


我们通过返回结果可以看到,我们确实访问到了,但是却不被认可,被赶出来了,那么我们现在就要去获得认可.根据返回信息我们看到,我们的访问ip不合法.首先我们知道,我们的本机应该有三个地址:本地地址,局域网地址,以及外网地址.我们既然去访问的第三方服务器,毫无疑问应该使用我们的外网地址,很多网站都可以获取到我们的外网地址,比如http://ip.chinaz.com/或者http://pv.sohu.com/cityjson?ie=utf-8都可以.但是我们不可能写死,因为服务器地址变化的几率并不小,那么我们是否可以动态的去获取我们的外网IP?我们使用和刚才一样的方法,我们通过io流去访问查询外网ip的网站,去读取到返回的信息:

//获取外网ippublic static String getV4IP(){String ip = "http://pv.sohu.com/cityjson?ie=utf-8";String inputLine = "";String read = "";try {URL url = new URL(ip);HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));while ((read = in.readLine()) != null) {inputLine += read;}} catch (Exception e) {e.printStackTrace();}System.out.println(inputLine);return inputLine;}public static void main(String[] args) {getV4IP();}

我们运行getV4IP()方法查看返回,打印返回结果,发现返回的是一个固定的字符串:

我们可以清楚的看到我们需要的ip地址确实拿到了,但是同时还有一些我们不需要的东西,这个时候就简单了,既然返回的格式是固定的,那么我们只需要对字符串进行简单的切割处理就好了:

 //获取外网ippublic static String getV4IP(){String ip = "http://pv.sohu.com/cityjson?ie=utf-8";String inputLine = "";String read = "";try {URL url = new URL(ip);HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));while ((read = in.readLine()) != null) {inputLine += read;}} catch (Exception e) {e.printStackTrace();}System.out.println(inputLine);//var returnCitySN = {"cip": "111.57.0.50", "cid": "CN", "cname": "CHINA"};String substring = inputLine.substring(28, 39);System.out.println("外网ip:"+substring);//111.57.0.50return substring;}public static void main(String[] args) {getV4IP();}

我们再打印一下切割后的结果:

我们就拿到了我们需要的东西.我们再去拿着敲门砖找房子:

我们再次访问的时候,发现我们被识别了,并成功拿到了我们想要的数据.

果然,io流传输界万能的神.我这里用到的是IP,类似的其他的都可以类比的去实现.

一点点的文学气息

**文学小提问:**世人皆知春宵一刻值千金,你知道下一句所为何吗?
**寄语:**大鹏一日同风起,扶摇直上九万里。
**作者笔录:**诸君既有登天揽月之志,即无高踏之台给吾上乎?然今高踏之台,如池塘戏鱼虾之流,食饥之道,非吾之愿也。吾之志,上可登临望月辰,下可临渊观蛟龙,月辰不可触,亦上而抚之,蛟龙不可戏,亦下而降之。诸君年少乎?若年少,不可贪于池塘斤斤肥鱼而步不离,望北冥浩瀚而却步。守而鱼之,终有尽时,不若动而渔之,无穷尽矣。非乎?亦持老骥伏枥之心,汉升壮哉之志。吾之志,有其心而动,诸君共勉。

Java后台调用第三方接口相关推荐

  1. java如何调用第三方接口

    最近在做一个项目,因一些机制问题,需要我用java代码调用第三方接口.因其接口使用的是@RequestBody注入访问对象的,@RequestBody接受收的是一个json格式的字符串,一定是一个字符 ...

  2. java后台请求第三方接口,写入中文参数时失败“message“:“Invalid UTF-8 start byte 0x84\n at XXXXXXXXX

    RT调用第三方接口时,参数有些要传入中文,在connection.setRequestProperty("Content-Type", "application/json ...

  3. java异步调用第三方接口_Java调用第三方系统接口获取数据

    1,调取接口代码 RestTemplate restTemplate=new RestTemplate();HttpHeaders headers=new HttpHeaders();MultiVal ...

  4. http方式调用第三方接口

    java如何调用对方http接口(II) - 流年煮雪 - 博客园 纯Java api HttpURLConnection Java调用外部接口_CJD的博客-CSDN博客_调用外部接口 纯Java  ...

  5. Java 调用第三方接口,实战来了!

    在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口. 1.准备工作: 在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的restTem ...

  6. Java调用第三方接口示范

    在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口. 使用流程 [1]准备工作:在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的re ...

  7. Java 调用第三方接口方法

    Java 调用第三方接口方法 一. 通过JDK网络类Java.net.HttpURLConnection 1.java.net包下的原生java api提供的http请求 使用步骤: 1.通过统一资源 ...

  8. java调用第三方接口示例

    引言:在我们开发的过程中,常常会听到或者接触到第三方接口,那么这个第三方接口到底是什么呢? 简单来说就是一个远程接口,不是在你本机上的,你需要通过远程url去访问调用该接口.许多项目中有明确的要求需要 ...

  9. 前端调用第三方接口跨域问题(淘宝)

    前端调用第三方接口跨域问题 百度了好久,大部分的文章都前篇一律的说jsonp跨域,要不就是说配置CROS.看到那种文章出处应该都是一家,心好累.首先来说淘宝目前的接口是不支持jsonp请求的,配置CR ...

  10. Java程序调用MATLAB接口

    Java程序调用MATLAB接口 文章目录 Java程序调用MATLAB接口 一.注意事项 二.环境安装 三.MATLAB如何生成JAR包 四.MATLAB生成的JAR包如何引入到Java程序中 五. ...

最新文章

  1. java亲密数的解题思路,算法解题思路总结 - jjhgx的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. 一段简单的打印代码(c#)
  3. 11.15scrum会议
  4. flask创建虚拟环境
  5. 移动前端开发之viewport的深入理解(转)
  6. html5 osgb,一份价值****元的Smart3d(Context Capture)和大疆智图(DJI Terra)建模评测...
  7. 解决问题:Exception during message handling: Unacceptable CPU info: CPU doesn't have compatibility...
  8. 三星 9810 android 9,【极光ROM】-【三星NOTE9 N960X-9810】-【V19.0 Android-Q-TF5-OneUI2.1】...
  9. SSM项目实战:学生学籍管理系统
  10. 使用TypeScript两年后,还值得吗?
  11. 微博除夕日活达1.34亿 借阿里云化解流量洪峰
  12. 【LeetCode】马三来刷题之 Reverse Vowels of a Stringm
  13. TLV协议——实现封包与解析
  14. 详解区块链中EOS的作用。
  15. 【CSS】三行实现一个黑白网格背景(渐变)
  16. 你知道外卖cps是什么吗?(附裂变分销小程序源码搭建教程)
  17. Docker的安装与基本使用(一)---使用Docker的前提条件和三要素
  18. c语言清除文件缓存区,C语言之清空缓存区
  19. HashMap、ConcurrentHashMap源码解读(JDK7/8)
  20. 字节跳动李航入选ACL Fellow,他曾这样看待机器学习

热门文章

  1. 使用FlashBoot3.2c 将 U 盘制作成 DOS 启动盘
  2. linux man手册更新,linux man手册介绍【manual】
  3. 抽象代数 01.02 半群与群
  4. BIOS升级之:P5QPL-AM
  5. 小米一加等手机如何正确的刷入PixelExperience_Plus系统-完整谷歌服务
  6. [转载]Altium Designer 破解,避免局域网冲突的ad9.ini
  7. Ubuntu安装vmPlayer
  8. 教你怎么批量修改文件后缀名
  9. Centos7 Zabbix监控部署
  10. 50位中国女性科学家入选2022福布斯