赞
踩
在执行一个接口之前需要查询上一个接口的返回,但是上一个接口返回的字段value是异步返回,所以需要轮询一段时间,进行判断,所以就有了前置轮询等待的需求。
1.请求参数:以下是请求体为raw的形式,在Pre-request Scripts前置请求接口,设置轮询次数和间隔时间,base_request是需要轮询请求接口的请求参数,包括了请求的url、method、header、body;其中body包括mode(请求体类型)、raw(请求体类型为raw,则需要传raw)。以下的update_credit_request也是同理,因为轮询脚本一次调了两次接口。
2.请求方法:pm.sendRequest()用来发送请求
3.轮询核心:setInterval方法可以定时执行脚本,需要传入执行函数(getResult)、执行间隔时间(单位:mms),执行函数内调用pm.sendRequest()来发送请求,if/else做参数的匹配,如果匹配到想要的参数调用clearInterval(timer)来终止轮询,在这里我们还定义了一个i,来设置轮询的次数,超过轮询次数 我们就终止轮询。
- var env = pm.environment.get("ENV")
- var str_requestBody= pm.request.body.raw // 获取请求体中的数据,字典
- var json_requestBody = JSON.parse(str_requestBody) // 把请求参数转成JSON
- var mobile_no = json_requestBody.requestBody.mobile_no
- console.log("请求手机号:",mobile_no)
-
- const base_request = {
- url: "http://www.baidu1.com",
- method: 'POST',
- header: 'Content-Type:application/json',
- body : {
- mode: 'raw',
- raw: {
- "url": "http://www.baidu.com",
- "method": "post",
- "requestBody": {
- "env": env,
- "product_code": "CHANGPING",
- "mobile_no": mobile_no
- },
- "timeout": 60,
- "headers": {
- "Content-Type": "application/json",
- "user": "qizhuxiedaima",
- "cardId_admin": "62"
- }
- }
- }
- };
-
- const update_credit_request = {
- url: "http://www.baidu2.com",
- method: 'POST',
- header: 'Content-Type:application/json',
- body : {
- mode: 'raw',
- raw: {
- "url": "http://www.baidu2.com",
- "method": "post",
- "requestBody": {
- "env": env,
- "product": "CHANGPING",
- "query_info": mobile_no
- },
- "timeout": 60,
- "headers": {
- "Content-Type": "application/json",
- "user": "qizhuxiedaima",
- "cardId_admin": "108"
- }
- }
- }
- };
-
- console.log("URL的信息:",base_request)
-
- var i = 0;
- // 封装发送请求方法,用于计数器调用
- function getResult(){
- pm.sendRequest(base_request, function(err, response) {
- i += 1;
- if(err){
- console.log(err);
- }
- else{
- res = response.json()
- data = res.data.data
- a = data.hasOwnProperty("appl_no_credit_all") // 判断是否存在该字段元素
- if(a == true){
- state = res.data.data.appl_no_credit_all
- console.log(state)
- if( state.match("PS") || state.match("RJ") || i > 40){ // 配置轮询次数,轮询终止条件:tradeStatus字段变为TRADE_SUCCESS,或轮询次数达到设定值
- clearInterval(timer);
- }
- else{
- pm.sendRequest(update_credit_request,function(err,update_response){
- last = update_response.json()
- result = last.data.result
- console.log(result)
- if(result[0].match("通过处理阶段-FINISHED")){
- console.log(result)
- clearInterval(timer)
- }
- })
- }
- }
- else{
- console.log(data)
- }
- }
-
- });
- }
-
- timer = setInterval(getResult, 30000); // 配置轮询间隔(单位毫秒),例如没60秒轮询一次
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。