LR12调用dubbo接口笔记

       这两天礼拜在测试额度中心单系统的几个交易,是通过dubbo直接调用服务的方式去访问,于是也学习了包括dubbo调用,复习了java基础等方面的知识,这篇文章做一个总结,把其中实现的关键点记录下来,以便以后工作需要。

1、dubbo一般是整合了spring框架的,因此要调用dubbo上的服务,必须准备好相关的jar包和配置文件。当然JDK1.8以上的开发环境也是必须的。

jar包:主要包括了dubbo和spring运行所需。列表如下:包括但不限于红框部分,有些需要根据项目要求来。

配置文件:主要是消费者配置文件,因为服务需要采用spring框架控制反转的形式去获取java bean对象。

主要配置要素包括:注册中心地址,应用服务器集群组名,以及各个接口的服务ID(group中配置的名称),前面的id可以自己命名

2、 先在eclipse中调通脚本,新建工程,注意目录存放方式:

新建resouce文件夹(在bulid path中配置成默认路径,脚本运行时会自动去读取),config里面存放bootstrap.properties文件,该文件可能没有作用,但是由于该程序运行需要加载,因此必须存在。dubbo-consumer.xml也存放在里面(如果是loadrunner里面,只要跟脚本路径一致即可) 

3、程序代码结构:

package dubbo_test;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.dap.api.IService;
import com.dap.param.ControlData;
import com.dap.param.StringInput;
import com.dap.param.StringOutput;

public class Dubbo_check_before_query {
    
    private IService demoService1 = null;
    private static ClassPathXmlApplicationContext context = null;
    public int init() throws Throwable {
        context = new ClassPathXmlApplicationContext("dubbo-consumer.xml");   //加载消费者配置文件
        demoService1 = (IService)context.getBean("check_before_query");    //获取服务bean
        //System.out.println(demoService1);
        //demoService2 = (IService)context.getBean("scan_limit_recover");    
        return 0;
    }//end of init
    
    
    public int action() throws Throwable {
        //报文头:这部分是公司统一规定的格式,任何通过dubbo调用的报文都指定了这部分的内容和格式
        StringInput input = new StringInput();
        String code = "";
        String transSeqNo = "9A201901040004993885";
        Map<String, Object> map = new HashMap<String, Object>();
        ControlData ctrlData = new ControlData();
        ctrlData.setTransSeqNo(transSeqNo);
        ctrlData.setTransMedium("NM");
        ctrlData.setUserId("UR000000907545");
        ctrlData.setTransTeller("9995003");
        ctrlData.setTransBranch("801000");
        ctrlData.setSysIndicator("9A");
        ctrlData.setReqTime(new Date());
        ctrlData.setHostIp("127.0.0.1");
        ctrlData.setBizTrackNo(transSeqNo);
        ctrlData.setPageIndex(1);
        ctrlData.setPageSize(0);
        ctrlData.setServcId("AS_LCS_RST_CKBFSC"); //服务名为:AS_LCS_RST_CKBFSC
        input.setCtrlData(ctrlData);

//根据报文的内容,构造报文体:该报文的json格式,并且使用map去构建的;不同的系统报文格式不一,构建方式要根据后台解析方式确定,这个需要跟对应的开发人员去确认。
        map.put("tranam","0.13");
        map.put("beanId","queryCKBFSC");
        map.put("acctNo","6235401595722401874");
        map.put("servcId","AS_LCS_RST_CKBFSC");
        map.put("brchno","801000");
        map.put("trantp","03");
        map.put("servtp","NM");
        map.put("dyflag","1");
        map.put("custtp","11");
        map.put("accttp","3");
        map.put("limttp","23");
        map.put("cardno","6235401595722401874");
        map.put("prcsna","扫码支付扣减前检查");
        map.put("risklv","01");
        map.put("custid","UR100468920896");
        map.put("rebktp","99");
        map.put("limttp","23");
        String[] ptp = {"02", "03"};
        map.put("prodtp",ptp);
        
        //入参:将构建的map对象转成json格式
        input.setBody(JSON.toJSONString(map));
        
        StringOutput result1 = (StringOutput) demoService1.handle(input); //发送报文,返回对象存在result1 中
        String resultStr1 =JSON.toJSONString(result1);  //将返回内容转换成json格式

        //获取交易结果信息
        code = resultStr1.substring(resultStr1.indexOf("message") - 11, resultStr1.indexOf("message") -3);
        //返回不是0,就代表失败。
        if(!code.equals("00000000")){
            System.out.println("=====failed:" + resultStr1 + "=====");
            return 0;
          }else {
              System.out.println("=====success:" + resultStr1 + "====="); 
          }
        return 0;
    }

    public static void main(String[] args) throws Throwable {
        //调试主方法
        Dubbo_check_before_query dt = new Dubbo_check_before_query();
        dt.init();
        dt.action();
        
    }

}
 

4、将上述脚本移植到LR12中:

(1)LR协议选择java user

(2)配置运行所需环境,包括jdk和jar包:

(3)根据LR测试脚本结构去移植代码,其实上述eclipse中的代码就是根据LR中的结构写的。唯一的区别就是,要在action中加入LR事务开始和结束的语句。 

发布了53 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/figo8875/article/details/104673146