请求结构

更新时间: 2023/03/07 06:30:42

发起 API 请求的 URL 由不同参数拼接而成,有固定的请求结构。本产品服务端 API 请求结构主要由三部分组成:

  • URL:指向具体的业务请求,请参见各个 API 接口文档。

  • Header:包括云信 AppKey、CheckSum 等在内的鉴权信息。

  • Body:包括 API 对应的请求参数。若接口没有请求参数,则无需传递 Body。

每篇 API 文档均给出了请求示例供您参考,请在发起请求前自行编码。接口调用成功会显示返回参数,调用失败则显示相应报错,您可以根据错误码分析排查。

Header 中包括用于鉴权的相关公共参数,用于标识用户和接口签名。如非必要,每个单独的接口文档中不再对这些参数进行说明,但每次请求均需要携带这些参数,才能正常发起请求。

参数 说明
AppKey 网易云信控制台中指定应用对应的 AppKey。
Nonce 随机数,最大长度为 128 个字符。
CurTime 当前 Unix 时间戳,即从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的秒数。数据类型为 String。请求 Header 中的 CurTime 字段需要传入正确的 Unix 时间戳。调用服务端接口前,请确认调用方的本地服务器时间正确,否则可能会导致 CurTime 字段传参错误,并收到报错 414。
CheckSum CheckSum 的值为 String 格式,小写。其计算方式为:将 AppSecretNonceCurTime 三个参数拼接的字符串经过 SHA1 哈希计算,并将结果转化成 16 进制字符。即 CheckSum = sha1(AppSecret + Nonce + CurTime)。
出于安全性考虑,每个 CheckSum 的有效期为 CurTime 时间开始之后的 5 分钟内。建议每次请求都生成新的 CheckSum,同时请确认发起请求的服务器与标准时间同步,例如 NTP 服务。

CheckSum 校验

您可以参考以下代码计算 CheckSum,此处以 JAVA 为例。

import java.security.MessageDigest;

public class CheckSumBuilder {
    // 计算并获取CheckSum
    public static String getCheckSum(String appSecret, String nonce, String curTime) {
        return encode("sha1", appSecret + nonce + curTime);
    }

    // 计算并获取md5值
    public static String getMD5(String requestBody) {
        return encode("md5", requestBody);
    }

    private static String encode(String algorithm, String value) {
        if (value == null) {
            return null;
        }
        try {
            MessageDigest messageDigest
                    = MessageDigest.getInstance(algorithm);
            messageDigest.update(value.getBytes());
            return getFormattedText(messageDigest.digest());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    private static String getFormattedText(byte[] bytes) {
        int len = bytes.length;
        StringBuilder buf = new StringBuilder(len * 2);
        for (int j = 0; j < len; j++) {
            buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);
            buf.append(HEX_DIGITS[bytes[j] & 0x0f]);
        }
        return buf.toString();
    }
    private static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5',
            '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
}

Body

服务端 API 请求的 Content-Typeapplication/json。传入的 Body 必须为 JSON 格式。

服务地址

音视频通话 2.0 API 的服务接入地址为:https://logic-dev.netease.im/v2/api

通信协议

网易云信所有接口均支持通过 HTTPS 协议进行通信,保障更高的安全性。

字符编码

请求及返回结果均使用 UTF-8 字符集编码。

此文档是否对你有帮助?
有帮助
去反馈
  • Header
  • CheckSum 校验
  • Body
  • 服务地址
  • 通信协议
  • 字符编码