当前位置: 首页 > 知识库问答 >
问题:

使用 JSR223 JMeter 获取响应时间

云京
2023-03-14

是否可以在JMeter中使用JSR223/groovy采样器获取API请求的实际响应时间?我有以下工作代码,但是当我观察我的听众时没有得到适当的响应时间(响应内容实际上很好,一些json数据)。

目标 URL 在采样器的“参数”字段中给出(基于 Dmitri 的示例)。此外,我在标头中添加了一个持有者令牌,以便在执行请求时使用 OAuth 访问令牌。

我确实尝试使用事务控制器并在其中包含JSR223采样器,但这在获取响应时间方面不起作用(即使在创建父样本时也是如此)。

import org.apache.http.HttpEntity
import org.apache.http.HttpResponse
import org.apache.http.client.HttpClient
import org.apache.http.client.methods.HttpGet
import org.apache.http.impl.client.DefaultHttpClient
import org.apache.http.util.EntityUtils

import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors

List<String> urls = new ArrayList<String>(); // initialize array of URLs
Collections.addAll(urls, args); // read URLs from "Parameters" input and add them to array
ExecutorService pool = Executors.newFixedThreadPool(urls.size());

// initialize pool of Future Tasks with number of threads equal to size of URLs provided
for (String url : urls) { // for each URL from list
    final String currentURL = url;
    pool.submit(new Runnable() { // Sumbit a new thread which will execute GET request

        @Override
        public void run() {
            try {
                HttpClient client = new DefaultHttpClient();                // Use Apache Commons HTTPClient to perform GET request
                HttpGet get = new HttpGet(currentURL);                      

                get.addHeader("authorization","Bearer ${AccessToken}");     // Add the access token into the header 
                get.addHeader("connection","keep-alive");                   // Add keep-alive in header

                HttpResponse response = client.execute(get);                // HttpResponse response = client.execute(post);
                HttpEntity entity = response.getEntity();
                log.info("Response Status Code: " + response.getStatusLine().getStatusCode() + " " + response.getStatusLine().getReasonPhrase());       
                SampleResult.setResponseData(EntityUtils.toByteArray(entity));        
            } catch (Exception ex) {
                ex.printStackTrace();
                throw ex;
            }

        }
    });
}
pool.shutdown(); // shut down thread pool

共有1个答案

淳于博文
2023-03-14

您的示例在执行请求的线程完成之前返回,ThreadPoolExecutor 的 shutdown() 方法启动关闭但不等待它。尝试使用 awaitTermination: pool.awaitTermination(60, TimeUnit.SECONDS)

 类似资料:
  • 我在我的swift应用程序中使用Moya进行网络请求。 我能够获得请求和映射结果使用Moya-Object Mapper。 我以前使用过alamofire,我熟悉如何进行post,获取请求和阅读响应头。 然而,我似乎无法理解我怎么能在莫亚也这样做。 我确实浏览了文档,但它没有说明任何关于读取响应头的内容。 有没有任何例子或教程,我可以遵循如何做一个HTTP身份验证和读取响应头。以及如何发出post

  • 问题内容: 我正在发出HTTP请求并侦听“数据”: 问题在于响应是分块的,因此“数据”只是发送回的一部分内容。 我如何将全身退回? 问题答案:

  • 问题内容: 我是Node开发的新手,我正在尝试使用具有JSON响应的RESTful协议进行服务器端API调用。我已经阅读了API文档和本SO帖子。 我试图从轨道总线中提取的API并以JSON输出返回数据。我对如何使用实际URL中的所有参数和选项发出HTTP GET请求感到困惑。甚至可以通过浏览器或使用“ curl”命令来访问API及其响应。http://developer.cumtd.com/ap

  • 问题内容: 因此,我正在研究一种可以长时间显示页面请求的工具。 我通过使用jQuery Ajax(http://api.jquery.com/jQuery.ajax/)来做到这一点,并且我想找出获得响应时间的最佳方法。 我找到了一个描述在JavaScript中使用“日期”的线程(http://forum.jquery.com/topic/jquery-get-time- of-ajax-post)

  • 问题内容: 我正在尝试寻找在Android中发出USSD请求的方法。我找到了-http://commandus.com/blog/?p=58。我将所有需要的文件添加到我的项目中。 USSDDumbExtendedNetworkService.java: 表现: BootReceiver.java: 因此,现在该服务在启动完成后启动。 我的问题是我如何发送USSD请求并获得服务响应?谢谢!) 问题答

  • 问题内容: 所以这是我的问题,我正在使用AJAX(jQuery)将表单发布到,但是页面实际上需要回显诸如或的响应。我不确定如何从中获取响应并将其存储为变量… 这是我到目前为止的代码: 我还需要在json中回显响应吗?还是纯文本会好? 抱歉,这听起来像是一个愚蠢的问题,这是我第一次在Ajax中进行此类操作。 PS:如何在上述代码中命名POST请求? 问题答案: 实际上,这是服务器上所需的全部内容。

  • 我想问一下在执行查询时如何从PostgreSQL获得消息响应。 来自PostgreSQL的消息响应我的意思是这样的,例如: null

  • 我的问题是我如何发送USSD请求并得到服务响应?(谢谢!)