【问题标题】:How to use HttpClient with multithreaded operation?如何使用 HttpClient 进行多线程操作?
【发布时间】:2011-03-28 07:00:59
【问题描述】:

我要做一个应用程序,它在某个主机中执行登录 POST 请求,然后导航一些页面,查找并检索一些数据。 因为网站资源受会话保护,所以我必须先登录网站才能进行一些操作,例如获取或发布一些数据。 我的问题是因为 HttpClient 不是线程安全的,我怎样才能只创建一个 HttpClient 实例但线程可以安全地执行它? 请记住,底层连接必须先登录才能使用。

【问题讨论】:

    标签: java multithreading httpclient


    【解决方案1】:

    【讨论】:

    • 我已经阅读了它,但这不是我想要的。在帖子中你建议 HttpClient 的版本是 3.x。我用的是4.x,需要有状态的连接才能使用,不是无状态的。如果建议无状态的ThreadSafeClientConnManager,但是如果需要有状态呢?
    【解决方案2】:

    【讨论】:

    • 是的,我可以。据我所知,HttpClient使用单个连接。如果我使用 ThreadSafeClientConnManager,它可以保存我的第一个登录会话吗?
    • 是的,状态与连接无关。例如。如果请求 1 设置了一个 cookie,那么使用 Thread Safe Conn 管理器的请求 2(对于同一域)也是可见的。
    • 好的,非常感谢!我会再试一次。
    • 请记住,ThreadSafeClientConnManager 自 4.2 版起已弃用,请改用 PoolingClientConnectionManager
    • 参见stackoverflow.com/a/14762579/923560,了解如何在 4.2 版中设置 PoolingClientConnectionManager 的示例
    猜你喜欢
    • 2012-08-11
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 2019-02-27
    • 1970-01-01
    • 2018-01-01
    相关资源
    最近更新 更多