加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 配置HttpClient以用作Restlet客户端

发布时间:2020-12-14 19:11:44 所属栏目:Java 来源:网络整理
导读:我无法为我的客户端代码配置Restlet.我正在使用Restlet 2和HttpClient 4.我将扩展jar和HttpClient jar添加到构建路径,它似乎工作. 但是,我不知道如何详细配置它.我没有手动创建任何客户端,而是使用ClientResources进行交互,这是我直接使用Restlet的唯一部分.

我无法为我的客户端代码配置Restlet.我正在使用Restlet 2和HttpClient 4.我将扩展jar和HttpClient jar添加到构建路径,它似乎工作.

但是,我不知道如何详细配置它.我没有手动创建任何客户端,而是使用ClientResources进行交互,这是我直接使用Restlet的唯一部分.客户端的具体实例似乎隐藏在框架实现中.我发现了一些如何配置客户端的提示,但它们都是为Restlet 1.x编写的.

详细地说,我想配置以下部分:

>更改客户端请求的用户代理. clientResource.getClientInfo().setAgent(…)不起作用.
>增加每台主机的并行连接数.
>启用每个主机的持久连接和池.显然,Restlet到目前为止每个ClientResource创建一个新的连接,这不是很有效.

当然,我已经看过HttpClientHelper,但我不知道在哪里以及如何添加它.已经搜索了文档,但没有点击.

感谢帮助!

最佳答案
首先,为了确保您使用Apache的HttpClient进行连接,您需要在类路径上使用org.restlet.ext.httpclient.jar.其次,您是否将Context传递给ClientResource的构造函数?如果不是,您将需要:

    final Context context = new Context();
    context.getParameters().set("maxConnectionsPerHost","20");

    final ClientResource requestResource = new ClientResource(context,"http://localhost:8182/request");
    requestResource.getClientInfo().setAgent("Example-Client/1.0");

这会处理你感兴趣的maxConnectionsPerHost设置.另外,调用setAgent对我来说正如预期的那样工作.我不确定你的实例中可能存在什么问题.

关于持久连接,似乎HttpClient会为您解决这个问题. Restlet使用了描述here的HttpClient的ThreadSafeClientConnManager.它提到了对该链接的持久连接的支持.看来这个对象也会照顾你的池问题.您可能希望重用ClientResource的相同实例来利用此功能.我没有立即意识到ClientResource的线程安全策略,但我希望它是线程安全的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读