2017-03-17 171 views
0

有一个需求,我需要使用Jmeter API调用get/post/put请求。有人建议如何调用get,从JSR 223/beanshell/java sampler发布请求?使用JMeter API调用GET/POST请求

尝试使用下面的代码。但我不熟悉JMeter API。

import org.apache.jmeter.protocol.http.sampler.*  
HTTPSampler httpSampler = new HTTPSampler(); 
httpSampler.sample("http://example.com", "GET", true, 0); 
+0

是否有任何问题,你特别面临?有什么理由不使用Http sampler? – Amol

回答

0

如果你真的需要通过JSR223 Test Elements做到这一点,这是一个例子Groovy代码(它使用Apache HttpComponents,看到QuickStart更多的例子)

import org.apache.http.HttpEntity 
import org.apache.http.HttpResponse 
import org.apache.http.client.methods.HttpGet 
import org.apache.http.impl.client.CloseableHttpClient 
import org.apache.http.impl.client.HttpClientBuilder 
import org.apache.http.util.EntityUtils 

CloseableHttpClient client = HttpClientBuilder.create().build() 
HttpGet get = new HttpGet("http://10.195.78.185") 
HttpResponse response = client.execute(get) 

HttpEntity entity = response.getEntity() 
byte [] responseData = EntityUtils.toByteArray(entity) 
def statusCode = response.getStatusLine().statusCode 
if (statusCode >= 400) { 
    SampleResult.setSuccessful(false) 
} 
SampleResult.setResponseCode(statusCode as String) 
SampleResult.setResponseMessage(response.getStatusLine().reasonPhrase) 
SampleResult.setResponseData(responseData) 

不过,我会建议不要重新发明轮子并使用HTTP Request取样器。结合HTTP Header Manager,您可以将它用于任何基于HTTP的API的负载测试,并且JMeter将自动关注收集延迟,空闲时间,连接时间,处理响应代码等指标。有关详细信息,请参阅Testing SOAP/REST Web Services Using JMeter文章。

+0

非常感谢德米特里。现在,我明白了你的观点。在结果.csv文件中,我看到了JSR223采样器信息。但是,需要记录GET呼叫指标信息。 – chakravarthi

+0

像什么?您有'SampleResult'简写,您可以在其中填充所有必需的指标,但是您需要自己计算它们 –

+0

我正在测试每个页面由REST调用(某些是重复的)和不同客户导航页面导航顺序的应用程序不一样。因此,页面随机导航逻辑用java开发并导入为jar文件。我想把上面的代码放在一个方法和相关信息中,比如URL,Headers,POST body(用于POST请求)将作为参数发送。在这种情况下,SampleResult是否仍然专门收集REST调用的度量标准并以.jtl文件报告?请不要介意这个愚蠢的问题。这对我来说确实很重要。 – chakravarthi