19

我遇到了一些 Http Client 连接返回 NoHttpResponseException 大约 3 次的问题。

我的假设是防火墙正在关闭空闲连接(并不罕见)。我想用 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)来做到这一点,而不必编写程序来做到这一点

4

3 回答 3

22

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

如果需要,将路径更改为与 / 不同的路径...

于 2013-01-28T22:44:44.923 回答
6

不,curl 和 wget 都无法做到这一点。当工具退出时,它将关闭所有连接。

我想说对你来说最好的选择是使用脚本语言,也许还有一个 libcurl 绑定,它允许你以更加程序化的方式来处理所有的 curl 魔法。这样你就可以做一个请求,休眠 10 秒,然后做另一个请求,然后它会尽可能地重复使用相同的连接。

几乎所有您选择的编程语言都有 libcurl 绑定可用,即使不使用 libcurl,您也可以实现此功能,尽管可能不那么容易。

于 2013-01-23T09:13:36.407 回答
0

我不确定,但如果你允许使用编程选项,那么 PHP 中的多卷曲可以给你预期的结果,你也不需要使用睡眠。多卷曲将在并行过程中运行所有请求。

多卷曲

如果你想使用它,我可以把代码发给你。

于 2013-01-29T08:28:16.810 回答