想起来之前在借助百度翻译接口做翻译小工具的时候,需要把参数进行md5加密后再传输。
而在平时的接口测试工作中难免会遇到类似这种请求参数,比如md5加密、时间戳、随机数等等。固然可以先计算出准确的参数,但这样的话修改成本就太大了,每次都得改,所以我们在发送请求前需要提前构造好参数供请求调用。
像随机数、md5数字签名这种通过python可以很便捷的实现。这里主要说一下如何在postman中实现自动生成md5等并调用,算是继续补充postman的使用技巧吧
 
继续拿百度通用翻译接口作为栗子:
接口文档如下
然后是一些说明
(1)签名是为了保证调用安全,使用MD5算法生成的一段字符串,生成的签名长度为 32位,签名中的英文字符均为小写格式;
(2)为保证翻译质量,请将单次请求长度控制在 6000 bytes以内。(汉字约为2000个);
(3)签名生成方法如下:
1、将请求参数中的 APPID(appid), 翻译query(q, 注意为UTF-8编码), 随机数(salt), 以及平台分配的密钥(可在管理控制台查看)
按照 appid+q+salt+密钥 的顺序拼接得到字符串1。
2、对字符串1做md5,得到32位小写的sign。
官方举例:将apple从英文翻译成中文:
请求参数:
q=apple
from=en
to=zh
appid=2015063000000001
salt=1435660288
平台分配的密钥: 12345678
生成sign:
>拼接字符串1
拼接appid=2015063000000001+q=apple+salt=1435660288+密钥=12345678
得到字符串1 =2015063000000001apple143566028812345678
>计算签名sign(对字符串1做md5加密,注意计算md5之前,串1必须为UTF-8编码)
sign=md5(2015063000000001apple143566028812345678)
sign=f89f9594663708c1605f3d736d01d2d4
完整请求为:
http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4
OK,下面进入正题,介绍如何在postman中生成随机数、md5签名,然后调用
1.首先要在Pre-request Script标签中编写脚本
因为要自动生成随机数、md5签名等传给接口,然后调用接口,即在请求前做好这些准备工作,所以要在Pre-request Script标签中编写脚本
2.编写思路
(1)把一些固定参数以及会被其他参数引用到的参数设置为环境变量,所以先在环境变量中添加appid和secretKey
(2)sign=appid+q+salt+密钥 的MD5值,可以看到要翻译的字符串q也是生成sign的一部分,但是每次翻译的内容不同,意味着q是变化的,所以不能把它写死到postman的params中。
开始想把q直接设置成环境变量,然后在Pre-request Script中读取这个环境变量,结果发现在Pre-request Script中是无法通过{{}}引用环境变量的;
然后就换个思路,还是把q写到Pre-request Script中,先把它定义为一个字符串,然后再创建一个环境变量,把q的值传给这个环境变量,最后在params中引用这个环境变量就好了(要翻译不同内容时,自行修改q的内容)
 
下面是完整的脚本和注释
//定义要翻译的字符串
var query = "霸王别姬"; //每次翻译不同内容时,在这里修改
pm.environment.set("q", query); //设置一个环境变量q,接收源字符串 //获取预先设置为环境变量的appid和secretKey
appid = pm.environment.get("appid");
secretKey = pm.environment.get("secretKey"); //定义一个随机数(32768, 65536)之间
var salt = parseInt(Math.random()*(32769)+32768,10);
//将随机数转换为字符串
var s = salt.toString();
console.log(salt);
//将生成的随机数设置为环境变量,方便传参
pm.environment.set("salt", salt); //定义一个由appid、要翻译的字符串、随机数、密钥组合成一个字符串
var str = appid + query + salt + secretKey;
console.log(str); //将str进行md5加密
var strmd5= CryptoJS.MD5(str).toString();
//let md5Str = CryptoJS.MD5(str).toString();
console.log(strmd5);
pm.environment.set("sign", strmd5); //将加密后的签名设置为环境变量方便后续调用
postman的params中按照如下方式引用
调用成功的话就是下面这个样子

postman(十二):发送携带md5签名、随机数等参数的请求的更多相关文章

  1. SNF开发平台WinForm之十二-发送手机短信功能调用-金笛-SNF快速开发平台3.3-Spring.Net.Framework

    1.调用前组装参数 2.调用发送信息服务脚本   .调用前组装参数: BaseSendTaskEntity entity = new BaseSendTaskEntity(); entity.Mess ...

  2. ASP.NET Core 2.2 基础知识(十二) 发送 HTTP 请求

    可以注册 IHttpClientFactory 并将其用于配置和创建应用中的 HttpClient 实例. 这能带来以下好处: 提供一个中心位置,用于命名和配置逻辑 HttpClient 实例. 例如 ...

  3. postman发送HTTP请求自动生成MD5签名

    POSTMAN是常用的接口测试工具 如何进行MD5签名呢? 代码如下: /** * 通过request.data获取body的内容,这个是postman内置变量 * 常用内置参数如下: * reque ...

  4. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  5. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十二:串口模块① — 发送

    实验十二:串口模块① — 发送 串口固然是典型的实验,想必许多同学已经作烂,不过笔者还要循例介绍一下.我们知道串口有发送与接收之分,实验十二的实验目的就是实现串口发送,然而不同的是 ... 笔者会用另 ...

  6. spring-boot-route(二十二)实现邮件发送功能

    在项目开发中,除了需要短信验证外,有时候为了节省 短信费也会使用邮件发送.在Spring项目中发送邮件需要封装复杂的消息体,不太方便.而在Spring Boot项目中发送邮件就太简单了,下面一起来看看 ...

  7. Senparc.Weixin.MP SDK 微信公众平台开发教程(十二):OAuth2.0说明

    紧接上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明>,这里专讲OAuth2.0. 理解OAuth2.0 首先我们通过一张图片来了解一下OAu ...

  8. (十二) 一起学 Unix 环境高级编程 (APUE) 之 进程间通信(IPC)

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  9. 《Django By Example》第十二章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第十二章,全书最后一章,终于到这章 ...

随机推荐

  1. 通过ES6 Module看import和require区别

    前言 说到import和require,大家平时开发中一定不少见,尤其是需要前端工程化的项目现在都已经离不开node了,在node环境下这两者都是大量存在的,大体上来说他们都是为了实现JS代码的模块化 ...

  2. [Ljava.lang.String是一个字符串数组的字节码表示

    打印一个字符串数组的话,会发现 String[] arr = new String[10]; // String[] arr = {"yanggb", "huangq&q ...

  3. SpringCloud的入门学习之Eureka(Eureka的单节点)

    SpringCloud--->Spring生态体系的微服务架构:https://spring.io/ 官网贴图,如下所示,介绍了微服务的架构体系(话说,英语好读官网,可能很爽吧,没体验过). 1 ...

  4. Koa 中间件的执行

    Node.js 中请求的处理 讨论 Koa 中间件前,先看原生 Node.js 中是如何创建 server 和处理请求的. node_server.js const http = require(&q ...

  5. PlayJava Day004

    今日所学: /* 2019.08.19开始学习,此为补档. */ JDK 1.6:byte , int , short , char , enum JDK 1.7:byte , int , short ...

  6. Python【day 13】内置函数02

    一.作用域相关-2个 1.locals() 参数是空 返回当前位置作用域的所有变量,返回的是字典 当前位置:函数内,返回局部变量 当前位置:函数外,返回全局变量 2.globals() 参数是空 返回 ...

  7. Android框架Volley使用:Post请求实现

    首先我们在项目中导入这个框架: implementation 'com.mcxiaoke.volley:library:1.0.19' 在AndroidManifest文件当中添加网络权限: < ...

  8. 结对编程(Java实现)

    一.Github项目地址:https://github.com/qiannai/CreateArithmetic 二.PSP2.1表格: PSP2.1 Personal Software Proces ...

  9. Scala字符穿插值器

    从2.10.0版本开始,Scala提供了三种创新的字符串插值方法: s.f 和 raw 于2.11.0版本开始,用于模式匹配patter match中 小结: s: s"Hello, $na ...

  10. 2.idea安装JavaCC插件.md

      eclipse中插件安装JavaCC插件请参考博客:https://blog.csdn.net/qq_29232943/article/details/62439283   接下来是在idea中安 ...