网上的解决方法,总是千篇一律,能解决还好,就怕不找原因,转来转去还解决不了问题,我也对这个网友很无奈,即然不能解决,你转载他干嘛?
不想看罗说的直接去下面看我的解决方法。
网上解决方法1:
今天在调试Loadrunner HTTP/HTML脚本的时候出现报错Error -27492,通过将HTTPS请求修改为HTTP请求,问题得到解决。
Action.c(206): Error -27492: "HttpSendRequest" failed, Windows error code=12029 (cannot connect) and retry limit (0) exceeded for URL="https://host/xxxx/getCashierJson.htm?payOrderId=1512140000000076171&ts=1448263401360" [MsgId: MERR-27492]
Action.c(206): web_url("getCashierJson.htm") highest severity level was "ERROR", 0 body bytes, 0 header bytes [MsgId: MMSG-26388]
本次问题解决有些凑巧,具体原因暂时不太清楚,弄清楚了之后再补充
网上解决方法2:
默认情况下,当录制http请求后回放脚本,Runtime-setting-Preferences中“winlnet replay instead of sockets(windows only)”选项是不勾选的,即通过LR sockets模拟发出请求。
但是!
LR sockets默认SSL的版本为SSL2和SSL3。当录制https时,如果SSL版本不一致,就会使sockets端口连接失败,被服务器拒绝连接,因此为使回放成功,很多人会勾选“winlnet replay instead of sockets(windows only)”。而这个勾选,也就是造成后面报错的罪魁祸首。
勾选“winlnet replay instead of sockets(windows only)”后,LR通过windows系统的WinInet来对外发送请求。但是微软的WinInet对流量的统计并不准确,而且当发送的请求超时20秒后,就会自动报错“请求已超时“。这一个超时,也就是造成开头报错的原因;即便在LR中设置preferences-->options-->http-request connect timeout(sec)的值设为999,也没用,因为发送的请求没不经过LR socket,LR统计不到。
解决办法
1)取消勾选”winlnet replay instead of sockets(windows only)“选项
2)在脚本中添加https请求前,添加函数 web_set_sockets_option("SSL_VERSION","TLS")。
我的解决方法:
网上的方法我在此就不喷了,你觉得以上方法是解决了吗?把https 改成 https只能叫绕过,而不是解决。算了网上信息杂乱能获取的有用信息又有多少呢!
其实大家细想,HttpSendRequest failed,明显就是发送失败,而http又能发送,用浏览器也正常。明显就是脚本证书相关的内容导致的。
排查方法1:
用浏览器手动访问,不正常调浏览器证书相关的配置,浏览器及其他代理软件,IE代理等相关配置。把相关代理全部关掉试试。
排查方法2:
证书安全问题导致的请求被拦截,将IE相关的请求地址添加到受信任站点,把安全级别调整正常,或者直接重置。把高级重置,把相关证书的选项调整一下。(我是使用这个方法解决的,亲测)
----------------------------------------------------
予人玫瑰,手有余香!如果这篇文章帮助了你,并且让你觉得想要放到自己的博客上,欢迎转载,转载请注明出处。