Bootstrap

【开发经验】如何快速接入第三方接口

背景

​ 在第三方接口对接时,往往会出现如下问题。

  1. 接口提供方接口已经提供好,文档标准规范,但是调用方始终无法调用成功。
  2. RestTemplate也是从网上找来的代码,看这问题不大,参数死活传不对
  3. PostMan调用可以,但是代码开始写了,老是传不对参数。
  4. 客户端开发人员拿着各种客户端的代码给服务提供者看,并说:你看,我代码写的没问题。服务提供者:头大头大,开发语言都不一样,鬼知道咋回事。

        在接口对接时,往往第一个接口会出现各种各样的问题,请求头、请求体、请求类型、签名等等。由于开发人员开发语言、开发习惯不同,导致双方对接失败,开发时,也不可能帮对方去检测代码。这时可以通过一些大家有公共认知的东西来进行比较,如:比较Http请求报文

        大部分开发人员会熟悉谷歌浏览器的F12调试工具,这个工具可以清晰的看到http请求报文。慢慢的,大家也熟悉了http请求报文,因此,可以通过对比这些大家公认的一下信息,来快速的比较、定位问题。

简单快速的抓取Http请求报文

1.1 fiddler工具

        这是一个http代理工具,可以抓取经过此代理的所有http请求。如下图

在这里插入图片描述

1.2 java socket代码

        众所周知,Http协议是基于Tcp协议的。因此,可以通过java代码实现一个socket服务,通过http请求来请求当前服务。

 public static final Integer port = 8080;
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(port);
            Socket accept = serverSocket.accept();
            InputStreamReader reader = new InputStreamReader(accept.getInputStream());
            BufferedReader bufferedReader = new BufferedReader(reader);
            String str = null;
            while ((str = bufferedReader.readLine())!=null){
                System.out.println("----------");
                System.out.println(str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

        如上代码,启动开之后,在浏览器输入http://localhost:8080/socket/test?userName=123。请求到本地的8080 端口,控制台即可打印如下信息。

GET/socket/test?userName=123HTTP/1.
Host:localhost:8080
Connection:keep-alive
Cache-Control:max-age=0
sec-ch-ua:“Chromium”;v=“104”,“NotA;Brand”;v=“99”,“GoogleChrome”;v=“104”
sec-ch-ua-mobile:?0
sec-ch-ua-platform:“Windows”
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/104.0.0.0Safari/537.36
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site:none
Sec-Fetch-Mode:navigate
Sec-Fetch-User:?1
Sec-Fetch-Dest:document
Accept-Encoding:gzip,deflate,br
Accept-Language:zh-CN,zh;q=0.9

1.3 TCP工具

        如果当前没有java开发环境,可通过tcp工具启动监听,来获取http请求报文。TCP工具下載

        最后可以通过成功请求到接口的报文,和请求失败的报文进行对比,即可快速的定位问题。

;