1

由于信号器连接,在 jmeter 中执行脚本时出现错误

我需要在 url 中传递 connectionToken 和 connectionData ,如下所示。

"/Web/signalr/connect?transport=longPolling&clientProtocol=1.5&connectionToken=${connectionToken}&connectionData=${connectionData}"

我能够捕获 ConnectionToken 并成功传递。但是,我面临着 connectionData 的问题,看起来像

[{"name":"alertshub"},{"name":"loggerhub"},{"name":"notificationhub"}]

如何捕捉和传递这个。请找到截图

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

无法捕获以下连接字符串

连接数据:[{"name":"alertshub"},{"name":"loggerhub"},{"name":"notificationhub"}]

get 方法将上面的 connectionData 发送为

GET //abc.com/Web/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22alertshub%22%7D%2C%7B%22name%22%3A%22loggerhub%22%7D %2C%7B%22name%22%3A%22notificationhub%22%7D%5D&_=1522754518635

并得到响应connectionToken。我能够提取 connectionToken 。

现在,我需要发送

GET //abc.com/Web/signalr/connect?transport=serverSentEvents&clientProtocol=1.5&tid=10&connectionToken=%27FcFUJytTeVDsNq4EM5iY59NrIlAO4EK0nU%2BP9fDasBFDTA%2B78kpLr05HaQoqstQouqyFMP2hShwh2eHdiG%2BCsRq7wNHs70BVSkjJiLIdyePfB3SmMCmeZeZyvd1xzfnc%27&connectionData=%255B%257B%2522name%2522%253A%2522alertshub%2522%257D% 252C%257B%2522name%2522%253A%2522loggerhub%2522%257D%252C%257B%2522name%2522%253A%2522notificationhub%2522%257D%255D%26_%3D1522754518635

它有有效的connectionToken(提取)但没有connectionData。

响应是解析值时遇到意外字符:%。路径 '',第 0 行,第 0 位置。

我的问题是我怎样才能得到这个值,[{"name":"alertshub"},{"name":"loggerhub"},{"name":"notificationhub"}]。

接下来我需要发布

POST //abc.com/Web/signalr/connect?transport=longPolling&clientProtocol=1.5&connectionToken=FcFUJytTeVDsNq4EM5iY59NrIlAO4EK0nU+P9fDasBFDTA+78kpLr05HaQoqstQouqyFMP2hShwh2eHdiG+CsRq7wNHs70BVSkjJiLIdyePfB3SmMCmeZeZyvd1xzfnc&connectionData=%5B%7B%22name%22%3A%22alertshub%22%7D%2C%7B%22name %22%3A%22loggerhub%22%7D%2C%7B%22name%22%3A%22notificationhub%22%7D%5D&_=1522754518635

正如您在此处看到的,它具有有效的 connectionToken 但没有 connectionData。

对此的响应是:ConnectionId 的格式不正确。

火焰计1

火焰计2

火焰计3

4

1 回答 1

1

您需要使用与连接令牌相同的方法。您的变量似乎没有获得所需的值。您是否在两个线程组之间使用相同的变量?

**-->Here request is encoded and connection data is also encoded.**
GET //abc.com/Web/signalr/negotiate?clientProtocol=1.5&connectionData=**%5B%7B%22name%22%3A%22alertshub%22%7D%2C%7B%22name%22%3A%22loggerhub%22%7D%2C%7B%22name%22%3A%22notificationhub%22%7D%5D**&_=1522754518635

并得到响应connectionToken。我能够提取 connectionToken 。

现在,我需要发送

**-->Here again encoded connection data is further encoded.**
GET //abc.com/Web/signalr/connect?transport=serverSentEvents&clientProtocol=1.5&tid=10&connectionToken=%27FcFUJytTeVDsNq4EM5iY59NrIlAO4EK0nU%2BP9fDasBFDTA%2B78kpLr05HaQoqstQouqyFMP2hShwh2eHdiG%2BCsRq7wNHs70BVSkjJiLIdyePfB3SmMCmeZeZyvd1xzfnc%27&connectionData=**%255B%257B%2522name%2522%253A%2522alertshub%2522%257D%252C%257B%2522name%2522%253A%2522loggerhub%2522%257D%252C%257B%2522name%2522%253A%2522notificationhub%2522%257D%255D%26**_%3D1522754518635

如果我猜对了,那就避免编码两次。在第一个和第二个屏幕截图中,您对其进行了两次编码。如果“connectionData”已修复,则尝试“用户定义的变量”,或者如果它在某些响应中可用,则使用正则表达式捕获并进一步使用它。我希望您在数据提取过程中不会出错。

于 2018-04-04T12:03:10.110 回答