问题详情:

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. 碎碎念(DP)

    链接:https://ac.nowcoder.com/acm/contest/3006/F来源:牛客网 题目描述 在ACM比赛里,除了CE以外都是有效的提交.每一个提交都会有其评测的结果,或是AC,或 ...

  2. Android进阶——多线程系列之Semaphore、CyclicBarrier、CountDownLatch

    今天向大家介绍的是多线程开发中的一些辅助类,他们的作用无非就是帮助我们让多个线程按照我们想要的执行顺序来执行.如果我们按照文字来理解Semaphore.CyclicBarrier.CountDownL ...

  3. redis官网下载自动安装脚本

    注释:使用方法为 # ./redis.sh  version           ----version为官网版本号 #!/bin/bashversion=$1serverurl='download. ...

  4. 学习Github必须要会的知识

    目的     托管项目代码 基本概念 仓库Respository   存放项目代码,每个项目对应一个仓库,多个开源项目则有多个仓库. 收藏Star   收藏项目,方便下次查看. 复制克隆项目Fork ...

  5. mac item2自定义光标移动快捷键,移动行首行尾,按单词跳转

    To jump between words and start/end of lines in iTerm2 follow these steps: iTerm2 -> Preferences ...

  6. studentmanagement

    package javatestywh; public class ScoreInformation { private String stunumber; private String name; ...

  7. 6.44 以元素值为x的节点为根的子树的深度(递归实现)

    题目:求二叉树中以元素值为x的节点为根的子树的深度 #include<cstdio> #include<malloc.h> typedef struct btree{ char ...

  8. jquery_ajax 异步提交

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 快速排序&基数排序

    //快速排序 #include<stdio.h> void QuickSort(int R[],int low,int high) { int i=low,j=high; int pivo ...

  10. POJ 1655 Balancing Act【树的重心模板题】

    传送门:http://poj.org/problem?id=1655 题意:有T组数据,求出每组数据所构成的树的重心,输出这个树的重心的编号,并且输出重心删除后得到的最大子树的节点个数,如果个数相同, ...