• Error -27492: "HttpSendRequest" failed, Windows error code=12152 (invalid server response) and retry。。。


    转自:https://www.cnblogs.com/cheerjude/p/10092377.html

    百度了一下,答案千篇一律,基本解决办法都是:
    “在Runtime-setting中的preferences-->options-->http-request connect timeout(sec)的值设为999。”
    然并卵.....设置后依然报错,无法解决报错问题。

    问题根源

    报错显示是因为请求连接超时。
    普通情况下的处理,先设置"Runtime-setting中的preferences-->options-->http-request connect timeout(sec)的值设为999",确保不要请求超时,但如果依旧报错,请看下文。
    默认情况下,当录制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")。
     
    综上,
    当单独回放脚本时,请求数少,网站响应快,自家网速也够,所以请求超时就基本不会出现,当几百个用户一起并发,小网站性能不行,或者自家网络已经卡了,那么要发送的请求就会等待,当超过20秒后,就报了上述错误,因此录制https时,建议不要勾选winlnet replay instead of sockets选项,使用lr函数来解决即可。
  • 相关阅读:
    100——第9例
    100——第8例
    100——第7例
    POJ
    POJ
    POJ
    Egyptian Collegiate Programming Contest 2017 (ACM ECPC 2017)
    SCUT
    SCUT
    SCUT
  • 原文地址:https://www.cnblogs.com/apple2016/p/14137637.html
Copyright © 2020-2023  润新知