怎样在tsung中使用动态參数(二)

    上一篇博客说过,在配置getOrderId请求时,能够用动态变量(order_id)解析和捕获服务端返回的json对象。这个变量能够作为接下来的订单确认请求(Confirm)的输入參数。看一下Confirm请求的配置:

<request subst="true"> 
      <http url="/v5/Pay/payConfirm/?signature=%%anysdk:ck_sign%%&amp;cpOrderId=%%_order_id%%" method="GET" version="1.1" /> 
</request>
注意,“_order_id"不是笔误,前面的下划线是必须的。通过%%_order_id%%,我们能够在url中直接使用动态变量。

另外。我们还须要把order_id传入anysdk:ck_sign中。这要怎样实现呢? 你不能在配置文件里指定函数的參数,tsung会将全部的动态变量作为參数传入,你能够通过ts_dynavars:lookup()取出你所须要的变量,上erlang代码:

ck_sign({Pid, DynData}) ->
		{_,Val} = ts_dynvars:lookup(order_id, DynData),
		StrVal = binary_to_list(Val),
		Id = [{"cpOrderId",StrVal}],
		...

须要注意的地方有两点,

1. tsung的帮助文档中是用{ok,Val} = ts_dynavars:lookup(...)。这样写会导致匹配失败,网上非常多帖子都在问这个问题,要把ok换成_。

2. Val是二进制数据,须要用binary_to_list转成string再使用。

原文地址:https://www.cnblogs.com/jhcelue/p/6762563.html