背景:可能在做定義化的要求上,jmeter原有的jar包,已經不能滿足我們,就需要自己寫一個方法,以下就是寫入的一個模擬post的請求,在jmeter中使用的案例
一:寫代碼
1.代碼中的有兩個包,原諒我取名字取的cuo,第一個包名,com.databasecomputer這個包下有一個addcomputerinfo這個類,com.jmeter包下有httpcientPost這個類

com.jmeter.httpcientPost 一個post請求,是登錄請求,打印的是code碼和登錄后的信息
package com.jemeter;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
public class httpclientPost {
public static int sendpost() throws ClientProtocolException, IOException {
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost post = new HttpPost("https://user.XXX.com/m-users-a-act_sign.htm?pipeline=xx");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("email", "zhang1@qq.com"));
params.add(new BasicNameValuePair("password", "zhangjun123"));
post.setEntity(new UrlEncodedFormEntity(params));
CloseableHttpResponse response2 = httpclient.execute(post);
int code = response2.getStatusLine().getStatusCode();
HttpEntity http = response2.getEntity();
InputStream instreams = http.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(instreams));
StringBuffer buffer = new StringBuffer();
String line;
while ((line = reader.readLine()) != null) {
buffer.append(line + "br ");
}
reader.close();
System.out.println(code +" respones:"+buffer);
return code;
}
}
com.databasecomputer.addcomputerinfo 以下就是調用,並且調用事務
package com.databasecomputer;
import java.io.IOException;
import org.apache.http.client.ClientProtocolException;
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.jemeter.httpclientPost;
public class addcomputerInfo extends AbstractJavaSamplerClient {
public SampleResult runTest(JavaSamplerContext arg0) {
// TODO Auto-generated method stub
SampleResult result=new SampleResult();
result.sampleStart(); //事務啟動
try {
int responeCode=httpclientPost.sendpost();
if (responeCode==200) {
result.setSuccessful(true);
}else {
result.setSuccessful(false);
}
} catch (ClientProtocolException e) {
result.setSuccessful(false);
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
result.setSuccessful(false);
e.printStackTrace();
}
result.sampleEnd();//事務關閉
return result;
}
public static void main(String[] args) {
new addcomputerInfo().runTest(new JavaSamplerContext(new Arguments()));
}
}
運行打印code碼,返回登錄成功,注意:在運行時,要導入jmeter的jar包,不然運行會報錯,然后我就是不知道導入哪些包,出錯一個問題,就導入相應的包,但是發現效率很低,干脆全部導入了

導包的過程,導入的是jmeter下lib的所有jar文件

二、打包
代碼調試沒有問題,就打包生成jar文件,生成文件可以用maven命令生成,也可以使用項目自己生成
生成文件為postdemo,文件路徑是在jmeter下的lib/ext文件夾下

三、jmeter使用

注:如果生成jar成功,在啟動jmeter中會去查找到這個方法名,自己加載出來,我在線程組中設置了10次
點擊運行,控制台顯示

運行的次數

說明調用jar成功
