问题详情:

1、接口调用需要前提状态:登录状态(cookie)

2、接口请求需要签名,签名规则为:MD5(TokenKey+apikey+timestamp+nonc)

其中

1、TokenKey、apikey为接口构造方提供(永久不变);

2、nonc为随机数,自定义

3、timestamp 为 时间戳(百度百科)

对应解决办法:

1、登录获取cookie;

  1. 登录接口
  2. meiad type :application/x-www-form-urlencoded; charset=UTF-8
  3. 获取response data (cookie);test steps 中添加 Groovy Script ,其内容如下:

    """

    import com.eviware.soapui.support.types.StringToStringMap

    def cookiesList = testRunner.testCase.getTestStepByName("Login - Request 1").testRequest.response.responseHeaders["Set-Cookie"][0]

    cookiesList = cookiesList[0..-29] +"IsClosePwdWeak=0"
    log.info cookiesList

    return cookiesList

    """

  4. 外部引用方法:${(Groovy Script 命名)#result}  eg:${cookie_data#result}

2、获取时间戳timestamp;

  1. test steps 中添加Groovy Script ,其内容如下:

    """

    time = (new Date().time / 1000).intValue()
    log.info time
    return time

    """

  2. 外部引用方法:${(Groovy Script 命名)#result}  eg:${timestamp#result}

3、获取签名sign;

  1. 签名关键点为MD5加密,先构建加密方式;test steps 中添加 Groovy Script ,其内容如下:

    """

    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException

    public static String md5Password(String password) {

    try {

    MessageDigest digest = MessageDigest.getInstance("md5");
    byte[] result = digest.digest(password.getBytes());
    StringBuffer buffer = new StringBuffer();

    for (byte b : result) {

    int number = b & 0xff;
    String str = Integer.toHexString(number);
    if (str.length() == 1) {
    buffer.append("0");
    }
    buffer.append(str);
    }

    return buffer.toString();
    } catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
    return "";
    }
    }

    def apiKey = context.expand( '${Properties#apiKey}' ) 
    def tokenKey = context.expand( '${Properties#TokenKey}' )
    def nonc = context.expand( '${Properties#nonc}' )
    def timestamp = context.expand( '${time#result}' )

    md5_data= md5Password(tokenKey+apiKey+timestamp+nonc) //按照开发人员提供的签名组成规则,组成签名
    log.info md5_data
    return md5_data

    """

  2. 固定值TokenKey、apikey以及自定义值nonc的存放于参与签名组成;
    1. test steps 中添加 Properties;添加对应key,value;
    2. Groovy Script 脚本引用方法:
    3. 外部引用方法${(Properties命名)#(key)} eg:${Properties#apiKey}

4、构建目标接口

soupUI解决md5加密签名,cookie传递的更多相关文章

  1. postman headers 请求参数和MD5加密签名

    postman 变量可以这样写:{{timestamp}} ,也可以用系统的,{{$timestamp}},这样就不用给自己赋值了,但在 pre-requestScript中是获取不到这个值的 所以我 ...

  2. Jmeter Md5加密操作之-------BeanShell PreProcessor

    背景: 有一些登录会做一些md5校验,通过jmeter的BeanShell可以解决MD5加密情况. 1.首先需要一个解码的jar包,commons-codec-1.10.jar(网上很多),下载后,放 ...

  3. Jmeter(十九) Md5加密操作之-------BeanShell PreProcessor(转载)

    转载自 http://www.cnblogs.com/yangxia-test 背景: 有一些登录会做一些md5校验,通过jmeter的BeanShell可以解决MD5加密情况. 1.首先需要一个解码 ...

  4. 使用crypto模块实现md5加密功能(解决中文加密前后端不一致的问题)

    正常情况下使用md5加密 var crypto = require('crypto'); var md5Sign = function (data) { var md5 = crypto.create ...

  5. md5加密用户登陆遇到的问题及解决办法

    有个项目的登陆模块使用到了cas,应需求要求,用户名和密码传输时使用了md5加密模式,加密的密码可以直接保存在数据库,但是加密的用户名则必须解密出来才行,于是后台的java代码中便写了针对用户名的解密 ...

  6. md5加密,同样的代码得到不同的加密结果(已解决)

    场景: 开发环境(windows下)调用第三方接口验签通过,发测试环境(linux下)后死活验签通过不了 原因: md5是一项成熟的加密技术,问题应该在代码里,查了查感觉可能是字符编码的问题,导致加签 ...

  7. python 应用 base64、hmac、hashlib包实现:MD5编码 base64编码解码、SHA256编码、urlsafe_b64encode编码等等基本所有的加密签名的方法

    用python做HTTP接口自动化测试的时候,接口的很多参数是经过各种编码加密处理后在传到后台的,这里列举出python实现 应用 base64.hmac.hashlib包实现:md5编码 sha1编 ...

  8. js进行MD5加密(含中文),与后台JAVA加密之后结果不同(解决)

    开发小程序过程中与后台进行接口沟通,前期接口经过MD5加密和AES加密之后,后台进行解密. 今天出现一种情况,我前台加密之后的md5串与后台加密不同,后台发现可能是带用中文的原因, 这是加密之前的串: ...

  9. Delphi编码与签名【URL编码与解码,Base64编码与解码,MD5加密,HMAC-SHA1、HMAC-SHA224、HMAC-SHA256、HMAC-SHA384和HMAC-SHA512签名】

    作者QQ:(648437169) 点击下载➨delphi编码与签名 [Delphi编码与签名]URL编码与解码,Base64编码与解码,MD5加密,HMAC-SHA1.HMAC-SHA224.HMAC ...

随机推荐

  1. jquery判断当前浏览器是否是IE

    if (window.ActiveXObject || "ActiveXObject" in window){ layer.msg("This page does not ...

  2. swift之水纹动画

    import UIKit class CVLayerView: UIView { var pulseLayer : CAShapeLayer!  //定义图层 override init(frame: ...

  3. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring基于XML装配Bean

    Bean 的装配可以理解为依赖关系注入,Bean 的装配方式也就是 Bean 的依赖注入方式.Spring 容器支持多种形式的 Bean 的装配方式,如基于 XML 的 Bean 装配.基于 Anno ...

  4. SpringCloud学习之Stream消息驱动【自定义通道】(十一)

    如果不清楚本篇内容的,请务必先去看完上一篇再看本篇,否则阅读起来可能会有部分障碍和困难: 上一篇文章<SpringCloud学习之Stream消息驱动[默认通道](十)>我们简单用自定义通 ...

  5. (day 1)创建项目--2

    在pycharm查看创建好的项目 可以将myblog当做模块使用

  6. Social LSTM 实现代码分析

    ----- 2019.8.5更新 实现代码思维导图 ----- ----- 初始原文 ----- Social LSTM最早提出于文献 "Social LSTM: Human Traject ...

  7. java线程——线程局部变量

    一,线程局部变量ThreadLocal的作用 用于实现线程内部的数据共享,既对于相同的程序代码,多个模块在同一个线程中运行时要共享一份数据,在另一个线程访问的时候,访问的由是另一份数据. 每个线程调用 ...

  8. java线程——线程基础

    一,线程之间的关系 线程之间存在两种关系: (1)间接相互制约:相互争夺线程资源: (2)直接相互制约:线程之间的相互合作: 间接相互制约也可以成为互斥,直接相互制约也可以称为同步:同步也包括互斥,互 ...

  9. javaweb学习——会话技术(一)

    会话: 1.什么是会话:从打开一个浏览器,访问页面,到最终关闭浏览器的一个过程,就是一次会话. 2.会话的特点:包含多个请求,一次完整的会话是只针对一个用户. 3.会话机制:web中常用的技术,用来跟 ...

  10. Ubuntu 安装软件时显示:无法获得锁 /var/lib/dpkg/lock -open(资源暂时不可用)

    出错状况:在用 sudo apt-get install 安装软件时,结果终端提示: 无法获得锁 /var/lib/dpkg/lock -open(资源暂时不可用) 无法锁定管理目录(var/lib/ ...