首页 > 编程语言 >Java:对接外部系统

Java:对接外部系统

时间:2023-02-03 11:58:04浏览次数:38  
标签:调用 Java 示例 外部 对接 接口 参数 第三方 SDK

大家最常用的接口调用形式,应该是在前后端分离中,前端调后端controller接口。但有时业务需要,需要开发去对接第三方接口,即外部系统的接口

本人对接不多,但也有点小感受,分享给大家。

第三方是否有提供SDK

SDK是开发工具包的意思,对所有语言来说的一个泛称。如果只针对Java来说,就是第三方有没有提供依赖(jar包)

有提供SDK

本人看过多个第三方提供的SDK,调用时类和参数的代码形式五花八门,但都有一些共同参数(参数一般都是以post请求json形式):

  1. 调用的URL地址
  2. 公共参数
  3. 业务参数(俗称报文)

调用的URL地址

调用的URL很好理解,调用别人接口,你要知道地址吧

公共参数

公共参数是第三方对外暴露的所有api中,都需要提供的参数。比如appKey、appId、timestamp等等

业务参数

业务参数其实就是本次调用接口的业务报文,比如说调用A平台给其推送用户信息,则用户信息就是业务报文

我们要怎么做(开发)

  1. 去官网下载他们提供的SDK
  2. 把SDK放到公司的私服上,一般交给开发经理就行
  3. 在pom.xml引入依赖
  4. 去官网看下他们提供的调用示例代码,根据示例代码自己写个方法方便调用
  5. 一般公共参数比如appKey、appId,如果是固定值,就配置到applicaiton-dev.yml、applicaiton-pro.yml中

无提供SDK

绝大部分情况下,都是会有SDK的,如果没有SDK提供,这第三方比较low。但没办法,low也要对接。
共同点还是和上面一样,URL、共同参数、业务参数

不同的是自己找http客户端调用工具,比如httpClient。然后编写自己的调用类和方法,下面示例可参考下:

    public static String doPost(String postUrl ,String body){
        HttpPost httpPost = new HttpPost(postUrl);
        StringEntity stringEntity = new StringEntity(body, "utf-8");
        httpPost.setEntity(stringEntity);
        httpPost.setHeader("Content-Type", "application/json; charset=utf-8");
        HttpClient httpClient = HttpClientBuilder.create().build();
        HttpResponse response = null;
        try {
            response = httpClient.execute(httpPost);
            String result = EntityUtils.toString(response.getEntity());
            return result;
        } catch (IOException var8) {
            var8.printStackTrace();
            return null;
        }
    }

公共参数和业务参数示例

为了方便理解大家理解参数形式,给个常见的请求参数形式:

{
    "appKey": "xxxx",
    "appApi": "xx.xx.getUserInfo",
    "timestamp": 1256125363,
    "data":{
	   "userName":"zhangsan",
	   "age": 15
	 ...
     }
    ....
}

data为业务报文,其他第一层参数均为公共参数

标签:调用,Java,示例,外部,对接,接口,参数,第三方,SDK
From: https://www.cnblogs.com/ibcdwx/p/17088664.html

相关文章

  • Java 反射 (完) 类加载和反射获取信息
    三.类加载1.动态加载和静态加载基本说明反射机制是java实现动态语言的关键,也就是通过反射实现类动态加载1.静态加载:编译时加载相关的类,如果没有则报错,依赖性太强2.动态加载:......
  • java Comparator和Comparable的区别?
    参考:https://blog.csdn.net/m0_71087031/article/details/124850080Comparable是一个内比较器,可以和自己比较的Comparator是一个外比较器,方法有两个参数To1和To2,是泛型......
  • Java如何将若干时间区间进行合并的方法步骤
    java如何将若干时间区间进行合并的方法步骤问题原因工作中突然有个场景,需要合并时间区间。将若干闭合时间区间合并,实现思路如下:1、先对日期区间进行按时间顺序排序,这样......
  • 在Java中出现运行命令过长如何解决
    在启动程序时出现如下代码:  只需在.idea中找到workspace.xml文件,在如下位置加上代码  "dynamic.classpath":"true",  ......
  • Java里什么是POJO
    POJO(PlainOrdinaryJavaObject)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。POJO和JavaBean是我们常见的两个关键字,一般容易混淆,POJO全称是Pl......
  • java(18) 泛型
    Java泛型Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是......
  • Java(19)枚举
    Java枚举是一个特殊的类,一般表示一组常量,比如一年的4个季节,一个年的12个月份,一个星期的7天,方向有东南西北等。Java枚举类使用enum关键字来定义,各个常量使用逗号......
  • java(17)io流
    JavaIO流详解1.什么是IOJava中I/O操作主要是指使用Java进行输入,输出操作.Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。......
  • java语法
    一、常量和变量1、数据类型基本数据类型:Boolean、byte、short、int、long、char、float、double。它们分别占用字节数为1、1、2、4、8、2、4、8引用类型:数组、字符串、......
  • Java中ArrayList的扩容机制
    1.简介publicclassArrayList<E>extendsAbstractList<E>implementsList<E>,RandomAccess,Cloneable,java.io.SerializableArrayList的底层基于数组来实现,故......