开发者社区> 问答> 正文

java使用HttpClient模拟浏览器请求

代码如下,模仿10000次请求,为什么只成功了3次,求指教
screenshot
screenshot

展开
收起
蛮大人123 2016-02-28 18:00:53 2707 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    按题主的代码,在第三次请求中,创建HttpClientConnection对象时就已经阻塞了,只成功3次实属正常(第三次是浏览器的请求)。
    看一下PoolingHttpClientConnectionManager中的leaseConnection方法,阻塞发生在PoolEntryFuture对象get()方法中,这里会一直await下去。
    题主可以自行detect一下HttpClient的源码。

    解决方法很简单,每次都是新的HttpConnection就对了,比如:

    for (int i = 0; i < 1000; i++) 
        System.out.println(HttpClients.createDefault().execute(httpGet).getStatusLine().toString());
    2019-07-17 18:49:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载