1. 程式人生 > 實用技巧 >loadrunner get請求的一個java vuser 指令碼

loadrunner get請求的一個java vuser 指令碼

/*
 * LoadRunner Java script. (Build: _build_number_)
 * 
 * Script Description: 
 *                     
 */

import lrapi.lr;

import com.ytinf.service.lrTest.GetRequest;
import com.alibaba.fastjson.JSONObject;

public class Actions
{

    public int init() throws Throwable {
        return 0;
    }//end of init
public int action() throws Throwable { String url="http://XX.XX.XX.XX:8089/databridge_dg/hbase/lottery"; GetRequest getRequest=new GetRequest(); getRequest.addParameter("lotterysn","{lotterySn_lottery}"); lr.think_time(1); lr.start_transaction("票明細查詢"); JSONObject jsonObject
=null; try{ jsonObject=getRequest.get(url); }catch(Exception e){ lr.end_transaction("票明細查詢",lr.FAIL);//如果超時報錯,事務失敗 lr.output_message("獲取響應報錯了"); } if (jsonObject!=null){ if (jsonObject.get("status").equals(0)){ lr.end_transaction(
"票明細查詢",lr.PASS);//解析響應結果,事務成功 }else{ lr.end_transaction("票明細查詢",lr.FAIL); lr.output_message("響應資訊的status欄位不為 0 。");//解析響應結果失敗,事務失敗 } }else{ lr.end_transaction("票明細查詢",lr.FAIL);//響應結果 為 null,響應失敗 lr.output_message("獲取的響應資訊為 null"); } return 0; }//end of action public int end() throws Throwable { return 0; }//end of end }

附上 java 程式碼 通過 httpUtil 傳送http 請求:

package com.ytinf.service.lrTest;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.HttpClientUtils;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class GetRequest {
    private List<NameValuePair> params;

    public GetRequest() {}

    public GetRequest(List<NameValuePair> params) {
        this.params = params;
    }

    public void setParams(List<NameValuePair> params) {
        this.params = params;
    }

    // 直接傳入要傳送的引數列表
    public JSONObject get(String url, List<NameValuePair> params) throws Exception {
        CloseableHttpClient httpClient=HttpClients.createDefault();

        URIBuilder uriBuilder=new URIBuilder(url);
        uriBuilder.setParameters(params);

        HttpGet httpGet=new HttpGet(uriBuilder.build());
        CloseableHttpResponse response=null;
        String result=null;
        try{
            response=httpClient.execute(httpGet);
            // System.out.println(response.getStatusLine().getStatusCode());
            HttpEntity httpEntity=response.getEntity();
            // System.out.println(EntityUtils.toString(httpEntity));
            result=EntityUtils.toString(httpEntity);
        }finally {
            if (response!=null){
                response.close();
            }
            httpClient.close();
        }
        return JSONObject.parseObject(result);
    }
    // 可以直接 get URL,也可以通過單個add()方法,新增引數後 再執行
    public JSONObject get(String url) throws Exception {
        CloseableHttpClient httpClient=HttpClients.createDefault();

        URIBuilder uriBuilder=new URIBuilder(url);
        if (this.params!=null){
            uriBuilder.setParameters(this.params);
        }
        HttpGet httpGet=new HttpGet(uriBuilder.build());
        CloseableHttpResponse response=null;
        String result=null;
        try{
            response=httpClient.execute(httpGet);
            // System.out.println(response.getStatusLine().getStatusCode());
            HttpEntity httpEntity=response.getEntity();
            // System.out.println(EntityUtils.toString(httpEntity));
            result=EntityUtils.toString(httpEntity);
        }finally {
            if (response!=null){
                response.close();
            }
            httpClient.close();
        }
        return JSONObject.parseObject(result);
    }

    // 給例項變數新增 單個引數
    public void removeAllParameters(){
        if (this.params!=null && params.size()>0){
            this.params.clear();
        }

    }

    // 給例項變數新增 單個引數
    public void addParameter(String name,String value){
        if (this.params==null){
            this.params=new ArrayList<>();
        }
        this.params.add(new BasicNameValuePair(name,value));
    }



    public static void main(String[] args) throws Exception{
        String url="http://XX.XX.XX.XX:8089/databridge_dg/hbase/lottery";
        GetRequest getRequest=new GetRequest();
        List<NameValuePair> nameValuePairList=new ArrayList<>();
        nameValuePairList.add(new BasicNameValuePair("lotterysn","910440142860045587600108"));
        System.out.println(getRequest.get(url,nameValuePairList));

        getRequest.addParameter("lotterysn","910540078760041513600403");
        JSONObject jsonObject=getRequest.get(url);
        if (jsonObject.get("status").equals(0)){
            System.out.println("成功!");
        }else{
            System.out.println("失敗!");
        }

        url="http://XX.XX.XX.XX:8089/databridge_dg/hbase/win_lottery";
        getRequest.removeAllParameters();
        getRequest.addParameter("drawidlotterysn","175660110610175660092646500708");
        JSONObject jsonObject1=getRequest.get(url);
        System.out.println("中獎票查詢的響應結果:"+jsonObject1);




    }

}