Jmeter 支持CASLogin 透传重定向地址

这是一个关于如何使用JMeter的Java实现,`CASLogin` 类,进行CAS(Central Authentication Service)登录并获取重定向地址的示例。代码中包括了设置测试参数、初始化、执行登录操作以及解析重定向URL的方法。该类继承自`AbstractJavaSamplerClient`,并实现了测试开始和结束时的回调方法。
摘要由CSDN通过智能技术生成

package com.*.casLogin;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;

import com.*.jmeter.util.CASHttpClient;

public class CASLogin extends AbstractJavaSamplerClient {

    private String url;
    private String username;
    private String password;
    private static final String _eventId = "submit";
    private String lt;
    private SampleResult results;
    
    private static final String regex = "(\\d+\\.\\d+\\.\\d+\\.\\d+)\\:(\\d+)";
    
    // 这个方法是用来自定义java方法入参的。
    // params.addArgument("num1","");表示入参名字叫num1,默认值为空。
    public Arguments getDefaultParameters() {
        Arguments params = new Arguments();
        params.addArgument("url", "");
        params.addArgument("username", "");
        params.addArgument("password", "");
        return params;
    }

    //每个线程测试前执行一次,做一些初始化工作;
    public void setupTest(JavaSamplerContext context) {
        results = new SampleResult();
        results.setSampleLabel( "JAVA【CAS登录-返回重定向地址】");
        results.setDataEncoding("UTF-8");//因为响应的数据有中文,所以最好先设置编码
        url = context.getParameter("url");
        username = context.getParameter("username");
        password = context.getParameter("password");
        results.setSamplerData("url:"+url+"\n"+"username:"+username+"\n"+"password:"+password+"\n");
    }

    @Override
    public SampleResult runTest(JavaSamplerContext context) {
        try {
            results.sampleStart();// jmeter 开始统计响应时间标记
            lt = CASHttpClient.getCasLt(url);
            if ("".equals(lt)||null==lt) {
                throw new Exception("lt没有取到~!");
            }
            String redirect_url = CASHttpClient.sendCasLogin(url, username, password, lt,_eventId);
            
            redirect_url = rebuildRedirectUrl(redirect_url);
            if (redirect_url != null && redirect_url.length() > 0) {
                System.out.println("redirect_url:"+redirect_url);
                results.setResponseData(redirect_url, "UTF-8");
                results.setContentType("application/json");
                //results.setDataType(SampleResult.TEXT);
            }
            // System.out.println(resultData);
            results.setSuccessful(true);
        } catch (Throwable e) {
            results.setSuccessful(false);
            e.printStackTrace();
        }finally {
            results.sampleEnd();// jmeter 结束统计响应时间标记
        }
        return results;
    }

    private String rebuildRedirectUrl(String redirect_url) {
        Pattern p = Pattern.compile(regex);
        Matcher m =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值