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


    背景

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

    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();
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

            如上代码,启动开之后,在浏览器输入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工具下載

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

  • 相关阅读:
    什么是RPA?
    Day28|Leetcode 93. 复原 IP 地址 Leetcode 78. 子集 Leetcode 90. 子集 II
    HTML5网页设计制作基础大二dreamweaver作业、使用HTML+CSS技术制作博客网站(5个页面)
    动态dp
    [NPUCTF2020]Mersenne twister
    网关Gateway-快速上手
    【通信协议-RTCM】固定天线参考点信息 ---- 对应RTCM十六进制编码ID(3ED 3EE)
    使用 MongoDB Atlas 无服务器实例更高效地开发应用程序
    常用git 打tag命令
    vscode使用Eslint+Prettier格式化代码
  • 原文地址:https://blog.csdn.net/qq_30285985/article/details/126521398