繁体   English   中英

如何在apache异步http客户端中设置重定向策略

[英]How to set redirect strategy in apache async http client

我如何在 apache 异步 http 客户端中设置重定向策略? 我有这样的东西(scala 代码)。 注释代码按预期工作,但我每秒无法对一台主机执行超过 4 个并发请求,第二个版本可以处理更多并发连接,但根本不处理重定向。

object HttpClientManager {
def createHttpClient(): CloseableHttpAsyncClient = { //cm: NHttpClientConnectionManager
    /*


    val httpClient = HttpAsyncClients
        .custom()
        .setDefaultRequestConfig(config)
        //.setConnectionManager(cm)
        .build()
*/
    // val config = RequestConfig.custom()
  //           .setSocketTimeout(3000)
  //           .setConnectTimeout(3000).build();

    val socketConfig = SocketConfig.custom()
            .setSoTimeout(15000)
            .build();
    val connectionConfig = ConnectionConfig.custom()
            .setBufferSize(8 * 1024)
            .setFragmentSizeHint(8 * 1024)
            .build();

        val ioreactor = new DefaultConnectingIOReactor();
        val mgr = new PoolingNHttpClientConnectionManager(ioreactor);
        mgr.setDefaultSocketConfig(socketConfig);
        mgr.setDefaultConnectionConfig(connectionConfig);
        mgr.setDefaultMaxPerRoute(100)
        mgr.setMaxTotal(200)
        val httpclient = HttpAsyncClients.createMinimal(mgr);

    httpclient.start()
    httpclient
}
 }
CloseableHttpAsyncClient client = HttpAsyncClients.custom()
       .setRedirectStrategy(LaxRedirectStrategy.INSTANCE)
       .build();

HttpAsyncClients#createMinimal创建的最小客户端使用与其“成熟”对应物完全相同的连接管理代码。 它与它的不同之处在于仅提供最小的协议管道,以便在人们准备牺牲非必要协议方面的情况下提供更好的性能:代理支持、重定向、身份验证和状态管理。 因此,最小实现根本不处理重定向。

您可以直接在 Apache Request 对象上设置它,无需实例化单独的客户端对象。

apacheHttpRequestObject.setConfig(RequestConfig.custom().setRedirectsEnabled(false).build())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM