使用PostMan通过Script动态获取Token

本文讲述了如何在Postman中使用JavaScript脚本处理企查查开放平台的接口调用,包括创建环境变量、动态生成和设置Token,以及在登录后自动获取和应用Token以简化开发测试过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前情描述

公司需要接入企查查开放平台,当拿到接口文档的时候,想要先测试一下接口是否正常使用以及数据质量,通过其接口文档发现,需要在请求头header中添加动态生成的Token和当前时间戳Timespan来进行身份验证,但又不想通过写代码的方式去进行调用,那么需要在PostMan中通过一段JS脚本来解决这个问题。

新建测试环境

打开PostMan,新增一套环境变量

在这里插入图片描述

输入环境名字,填写变量名称,如果存在不会改变的全局变量,可以将值写入initial value(默认值)current value(当前值)中,或Token为动态配置的,可以忽略此步操作,需要通过后续JS赋值

在这里插入图片描述

获取调用参数

登录企查查开放平台,获取调用所需的Key和SecretKey

在这里插入图片描述

接口调用

按照文档中Token的生成规则:验证加密值 Md5(key+Timespan+SecretKey) 加密的32位大写字符串)
编写JS脚本动态生成Token
将生成的Token放入请求头中

在这里插入图片描述
在这里插入图片描述

var key = "";
var SecretKey = "";
postman.setGlobalVariable("key",key);
//获取当前时间戳
var timestamp =  Math.round(new Date().getTime());
var result = timestamp.toString().substring(0,10);
postman.setGlobalVariable("timestamp",result);
var str = key+result+SecretKey;

//使用MD5()方法对变量password的内容加密,然后转成字符串,大写
var strmd5 = CryptoJS.MD5(str).toString().toUpperCase().toString();

postman.setGlobalVariable("strmd5",strmd5)
console.log(strmd5)

补充

上述接口Token获取方式比较简单,而在实际开发中会存在另外一些场景
1.存在Token过期需要重新登录的情况
2.重新登陆后又需要在请求中手动复制Token
如果遇到这种情况,可以参考以下方式进行配置

配置登录接口获取动态Token

登录时动态获取Token,并且将Token设置到全局变量中
1.获取response的JSON格式
2.根据返回值的格式,获取到对应的Token,并设置到环境变量中
3.Pre-request Script和Tests区别:
Pre-request Script:在发送请求之前执行
Tests:在发送请求之后执行

在这里插入图片描述

//一定要根据实际情况具体去解析
//推荐和前面所讲的环境变量配合使用,不影响其余项目
var data = JSON.parse(responseBody);
pm.environment.set("Token", data.result);
将动态Token设置到请求头中

从登录接口获取的Token已设置成全局变量,下一步需要设置到接口的请求头中

在这里插入图片描述

//根据自身接口变量平常去配置
//若需要多个请求头参数,直接add多个即可
pm.request.headers.add({
    key: "Token",
    value: pm.environment.get("Token")
})
接口调用

配置好之后,再去调用其余接口,也不再需要手动去配置Token了,大大地减少了开发和测试的工作量在这里插入图片描述

<think>好的,我现在需要帮助用户了解如何通过Postman获取腾讯云WebSocket Token。首先,我需要回忆一下腾讯云API的通用鉴权机制。通常,腾讯云使用基于HMAC的签名方法,比如签名版本3(TC3-HMAC-SHA256)或者签名版本1。用户可能需要生成一个有效的签名才能获取Token。 接下来,用户提到使用Postman,所以得考虑如何在Postman中配置请求,特别是WebSocket相关的设置。不过Postman对WebSocket的支持可能有限,需要确认用户是否使用的是Postman的WebSocket功能,或者他们是否通过REST API来获取Token,再用于WebSocket连接。 查阅之前的引用内容,引用[2]中提到了通过Spring Boot集成WebSocket,并用Postman测试发送消息的接口。引用[3]提到在Postman中自定义请求头进行WebSocket鉴权。这说明可能有两种方式:一种是通过调用腾讯云的API接口获取Token(REST方式),另一种是在WebSocket连接时直接携带鉴权信息。 首先,我需要明确腾讯云WebSocket服务的具体鉴权方式。通常,WebSocket连接可能需要在握手阶段传递Token,比如在HTTP Upgrade请求的Headers中添加Authorization字段或其他自定义字段。或者,腾讯云可能要求先通过REST API获取临时Token,再在WebSocket连接时使用Token。 假设用户需要的是通过REST API获取Token,那么步骤可能包括:构造请求参数,生成签名,发送请求到腾讯云的Token接口,获取返回的Token。而Postman需要配置相应的请求方法、URL、Headers和Body参数,特别是签名信息。 生成签名的过程可能比较复杂,需要用到SecretId和SecretKey。例如,TC3-HMAC-SHA256签名需要构造规范请求、生成签名字符串,然后分步骤计算签名。用户需要在Postman中预设环境变量来存储SecretId和SecretKey,或者手动输入这些信息。 另外,可能需要在请求头中包含Authorization字段,格式如TC3-HMAC-SHA256 Credential=SecretId/...,以及签名信息。这需要用户正确配置Postman的Pre-request Script来自动生成签名,或者在每次请求时手动计算并填写。 如果用户是直接在WebSocket连接时传递Token,可能需要在建立WebSocket连接时的请求头中添加Token参数。例如,在Postman的WebSocket请求中,配置Headers中的Authorization或类似字段,值为获取到的Token。但根据引用[3],用户可能需要自定义握手阶段的Headers,这需要Postman支持WebSocket连接的Header配置。然而,Postman的WebSocket功能可能不支持动态生成签名,因此可能需要先通过REST API获取Token,再在WebSocket连接中使用。 现在需要将步骤拆解:首先获取Token的REST API调用方法,然后在WebSocket连接中使用Token。用户可能需要查阅腾讯云WebSocket服务的具体文档,确认获取Token的接口地址、参数和签名方法。假设接口是`wss://xxx.tencentcloud.xxx`,但实际可能需要调用`https://xxx.tencentcloudapi.com`的某个API来生成Token。 此外,错误处理也很重要,比如检查SecretId和SecretKey是否正确,时间戳是否同步,签名算法是否正确。在Postman中可能需要使用环境变量来动态生成时间戳,或者使用Pre-request Script生成签名。 总结步骤可能如下: 1. 获取腾讯云API的SecretId和SecretKey。 2. 构造规范请求,包括HTTP方法、URI、Query参数、Headers等。 3. 生成签名所需的字符串,包括时间戳、服务名、区域等。 4. 使用TC3-HMAC-SHA256算法生成签名。 5. 在Postman中配置REST API请求,包含生成的签名和其他必要参数。 6. 发送请求获取Token。 7. 在WebSocket连接时使用Token作为Header或Query参数。 需要验证这些步骤是否正确,同时考虑用户可能遇到的常见问题,例如签名错误、Token过期等。此外,引用[3]提到的自定义握手逻辑可能需要用户在WebSocket连接时添加特定的Headers,如自定义的Token字段,或者使用Bearer Token的形式。 可能还需要指导用户如何在Postman中设置WebSocket请求的Headers,因为常规的HTTP请求和WebSocket的握手请求设置方式不同。根据引用[3]的经验,用户需要手动在WebSocket连接的请求头中添加Authorization或其他自定义字段,值为获取到的Token。 最后,确保回答结构清晰,分步骤说明,并引用相关的参考资料,如腾讯云官方文档或用户提供的引用内容,以增强可信度。</think>### 通过Postman获取腾讯云WebSocket Token的方法 以下是分步骤操作指南,结合腾讯云API鉴权机制和Postman配置实现: --- #### **1. 获取腾讯云API密钥** - 登录腾讯云控制台,进入**访问管理 > API密钥管理**,获取`SecretId`和`SecretKey`[^1]。 --- #### **2. 生成API请求签名** 腾讯云WebSocket服务通常使用**TC3-HMAC-SHA256**签名算法。需在Postman中通过脚本或手动生成签名,步骤如下: 1. **构造规范请求** ```plaintext POST / Action=GetWebSocketToken&Nonce=12345&Region=ap-guangzhou&SecretId=AKIDxxxxxx&Timestamp=1629780000 content-type:application/json host:sts.tencentcloudapi.com content-type;host e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ``` - `Action`: 接口名称(如`GetWebSocketToken`,需参考具体API文档) - `Nonce`: 随机正整数 - `Timestamp`: 当前Unix时间戳 - `Region`: 服务地域(如`ap-guangzhou`) 2. **生成签名字符串** 格式:`TC3-HMAC-SHA256\n{Timestamp}\n{ServiceType}/{Date}/tc3_request\n{HashedCanonicalRequest}` - `ServiceType`: 服务类型(如`sts`) - `Date`: UTC日期(如`20230815`) 3. **计算签名** 使用`SecretKey`对签名字符串进行三次HMAC-SHA256加密,生成最终签名。 --- #### **3. 配置Postman请求** - **请求类型**: `POST` - **URL**: `https://sts.tencentcloudapi.com` - **Headers**: ```plaintext Content-Type: application/json Authorization: TC3-HMAC-SHA256 Credential=AKIDxxxxxx/20230815/sts/tc3_request, SignedHeaders=content-type;host, Signature=xxxxxx ``` - **Body**(JSON格式): ```json { "Action": "GetWebSocketToken", "Version": "2021-04-16", "Region": "ap-guangzhou", "TokenDuration": 3600 // Token有效期(秒) } ``` --- #### **4. 发送请求并获取Token** 成功调用后,响应中会包含`Token`字段(如`WebSocketToken: xxxxxx`)。 --- #### **5. WebSocket连接配置** 在Postman中建立WebSocket连接时,需将Token添加到请求头或URL参数中: - **Headers方式**: ```plaintext Authorization: WebSocketToken xxxxxx ``` - **URL参数方式**: ```plaintext wss://your-websocket-endpoint?token=xxxxxx ``` --- #### **注意事项** 1. **签名自动化**: 推荐使用Postman的**Pre-request Script**自动生成签名,避免手动计算错误[^3]。 2. **Token有效期**: 根据业务需求设置合理有效期,避免频繁刷新。 3. **安全存储**: `SecretId`和`SecretKey`需加密保存,避免泄露。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值