b_e*_*erb 5 java httpclient restlet
我无法为我的客户端代码配置Restlet.我正在使用Restlet 2和HttpClient 4.我将扩展jar和HttpClient jar添加到构建路径,它似乎工作.
但是,我不知道如何详细配置它.我没有手动创建任何客户端,而是使用ClientResources进行交互,这是我直接使用Restlet的唯一部分.客户端的具体实例似乎隐藏在框架实现中.我发现了一些如何配置客户端的提示,但它们都是为Restlet 1.x编写的.
详细地说,我想配置以下部分:
clientResource.getClientInfo().setAgent(…)不起作用.ClientResource,这不是很有效.当然,我已经看过HttpClientHelper,但我不知道在哪里以及如何添加它.已经搜索了文档,但没有点击.
感谢帮助!
首先,为了确保 Restlet 使用 Apache 的 HttpClient 进行连接,您需要在类路径中包含 org.restlet.ext.httpclient.jar。其次,您是否将 a 传递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");
Run Code Online (Sandbox Code Playgroud)
这会照顾maxConnectionsPerHost您感兴趣的设置。此外,通话setAgent对我来说也按预期工作。我不确定您的实例可能存在什么问题。
关于持久连接,似乎 HttpClient 会为您处理这个问题。Restlet 利用此处ThreadSafeClientConnManager描述的HttpClient 。它提到了对该链接的持久连接的支持。看来这个对象也会解决你的池问题。您可能希望重用相同的实例来利用这一点。我并没有立即意识到 的线程安全策略,但我希望它是线程安全的。ClientResourceClientResource