问题详情:

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. 【Java】Java计时器(秒表)

    https://blog.csdn.net/c_jian/article/details/50506759 应用名称:Java计时器 用到的知识:Java GUI编程 开发环境:win8+eclips ...

  2. java笔记01

    java对象数组 Student[] Students = new Student[3]; 与普通数组无差 java集合类 集合类: 面向对象对事物的描述是通过对象来体现的. 为了方便对多个对象进行操 ...

  3. cf1228 D Complete Tripartite(哈希)

    题意: 无向简单图,无自环,无重边,n个点,m条边,请你将这n个点分为3个互相没有交集的集合.并且满足以下条件: 1.同一个集合中的任意两点之间没有边. 2.每个点都要与除了它这个集合以外的所有点相连 ...

  4. Oracle专题

    定时任务:JOB文件夹 监视执行过的SQL 语句 select * from v$sqlarea a where module='PL/SQL Developer' order by a.FIRST_ ...

  5. Tensorflow学习教程------代价函数

    Tensorflow学习教程------代价函数   二次代价函数(quadratic cost): 其中,C表示代价函数,x表示样本,y表示实际值,a表示输出值,n表示样本的总数.为简单起见,使用一 ...

  6. GPLT L3-021 神坛

    在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相同,或者三块神石共线,神坛的面 ...

  7. k8认证机制

    参考下面博文 http://www.mamicode.com/info-detail-2270627.html 需要补充: k8s的的认证机制场景使用 客户端证书认证         采用双向证书进行 ...

  8. Windbg 实践之符号篇

    How to display the size value 1)一开始不会加载,chksym 了一下就加载了. 2) 新版本已经可以显示size的大小了 3)?? 显示变量的类型 4)x std::v ...

  9. c++ 广度优先搜索

    #include <iostream> using namespace std; ; ; // >=9皆可 struct node//声明图形顶点结构 { int vertex; s ...

  10. 出现UnboundLocalError: local variable 'a' referenced before assignment异常的情况与解决方法

    出现UnboundLocalError: local variable ‘a’ referenced before assignment异常的情况与解决方法字面意思:局部变量赋值前被引用原因:局部变量 ...