我遇到一些Http客户端连接有问题,连续3次返回NoHttpResponseException。
我的假设是防火墙正在关闭空闲连接(并不罕见)。 我想用curl模仿这个。
我一直在尝试这样的事情,但很可能连接永远不会闲置
curl --keepalive-time 60 --limit-rate 128B $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL
我想要的是类似于
的东西curl $URL
sleep 10
curl $URL
sleep 20
curl $URL
sleep 30
curl $URL
每次(使用一些魔法!)Curl重用相同的连接。
有没有办法使用curl(或wget)来完成这个,而不必编写程序来执行此操作
答案 0 :(得分:15)
没有你用netcat做的事情。
REQ="GET / HTTP/1.1\nHost: localhost\nAccept: *\n\n"
(echo -ne $REQ; sleep 1; echo -ne $REQ; sleep 2; echo -ne $REQ) | netcat localhost 80
如果需要,可以将路径更改为/不同的内容......
答案 1 :(得分:5)
不,没有办法既没有卷曲也没有wget这样做。当工具退出时,将关闭所有连接。
我会说最好的选择是使用脚本语言,也许是一个libcurl绑定,它允许你以更加编程的方式完成所有卷曲魔术。这样你就可以做一个请求,睡10秒然后做另一个请求,然后它会重新使用相同的连接 - 尽可能。
libcurl绑定可用于您选择的几乎任何编程语言,即使不使用libcurl,您也可以实现此功能,尽管可能不是很容易。
答案 2 :(得分:0)
我不确定但是如果您允许使用编程选项,那么PHP中的多卷曲可以为您提供预期的结果,您也不需要使用睡眠。 Multi-curl将在并行进程中运行所有请求。
如果你想使用它,我可以发给你代码。