我正在为其编写性能脚本的应用程序在Sails上实现,并使用cookie验证API调用的身份验证。使用JMeter中的HTTP Cookie管理器没有帮助,因为它没有记录所有Cookie值。我可以使用beanshell预处理器手动添加它们
beanshell代码片段:
CookieManager manager = sampler.getCookieManager();
Cookie cookie1 = new Cookie("cookie1","someValue","localhost","/",false,0);
manager.add(cookie1);
此代码成功地将cookie1添加到JMeter中的Cookie中。
我还需要添加另一个cookie,它的值类似于JSON。
CookieManager manager = sampler.getCookieManager();
Cookie jsonCookie = new Cookie("cookie1","{\"Element\":{\"child1\":\"child1value\",\"child2\":\"child2value\"}","localhost","/",false,0);
manager.add(jsonCookie);
这个新cookie(jsonCookie)的值在调试采样器中看起来很好。当我在请求中查找同一个cookie时,cookie变量在doublequote中添加了额外的转义字符。
Http Request Cookie Data:
cookie1=somevalue;jsonCookie="{\"Element\":{\"child1\":\"child1value\",\"child2\":\"child2value\"}"
Debug Sampler value
COOKIE_cookie1=somevalue
COOKIE_jsonCookie="{\"Element\":{\"child1\":\"child1value\",\"child2\":\"child2value\"}"
在cookie数据中添加额外的转义字符导致身份验证失败。如何确保cookie值没有这些额外的转义字符?
我曾尝试从用户定义的变量中提取这些json值,并将其直接传递到Beanshell预处理器中。在这两种方法中,得到的cookie值是相同的。