Questions tagged «apache-commons-httpclient»

10
不推荐使用的Java HttpClient-有多难?
我要做的就是下载一些JSON并将其反序列化为对象。我还没有下载JSON。 我几乎可以找到每个HttpClient示例,包括apache站点上的示例看起来都像... import org.apache.http.client.HttpClient; import org.apache.http.impl.client.DefaultHttpClient; public void blah() { HttpClient client = new DefaultHttpClient(); ... } 但是,Netbeans告诉我DefaultHttpClient不推荐使用。我尝试了谷歌搜索DefaultHttpClient deprecated以及我能想到的许多其他变体,并且找不到任何有用的结果,因此我显然缺少了一些东西。 用Java7下载网页内容的正确方法是什么?语言中确实没有像样的Http Client吗?我觉得很难相信。 我的Maven依赖关系是... <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>LATEST</version> <type>jar</type> </dependency>

30
禁用HttpClient日志记录
我在集成测试套件中使用commons-httpclient 3.1。HttpClient的默认日志记录非常嘈杂,我似乎无法将其关闭。我已经尝试按照此处的说明进行操作,但是它们都没有任何区别。 通常,我只需要关闭org.apache.http.wire logger。问题的部分原因是我不知道HttpClient尝试使用哪种类型的记录器,并且大多数问题是我以前从未使用过此库。我尝试创建一个log4j.properties文件并将其放入我的test / resources文件夹中,在jre / lib中修改主logging.properties文件,并按照日志记录页面上的指定将各种日志记录选项发送到Maven ,但没有一个有所作为。 任何帮助表示赞赏...这让我发疯。 更新:一项更正:似乎有问题的输出实际上是jwebunit对HttpClient的使用而不是我自己的。无论哪种方式,都是不可取的。 更新:感谢到目前为止的尝试。我已经尝试了下面建议的所有内容,但仍然没有运气。我的src / test / resources文件夹中有一个commons-logging.properties文件,内容如下 org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory log4j.configuration=log4j.properties 和文件log4j.properties在同一文件夹中,内容如下 log4j.rootLogger=ERROR, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%c] %m%n #This is the line that should make httpclient shut up log4j.logger.org.apache.http=ERROR 但是,当我运行测试时,仍然会得到很多这样的输出: 21:57:41.413 [main] DEBUG org.apache.http.wire - << " [\r][\n]" 21:57:41.413 [main] DEBUG org.apache.http.wire …

3
如何使用Apache HttpClient发布JSON请求?
我有类似以下内容: final String url = "http://example.com"; final HttpClient httpClient = new HttpClient(); final PostMethod postMethod = new PostMethod(url); postMethod.addRequestHeader("Content-Type", "application/json"); postMethod.addParameters(new NameValuePair[]{ new NameValuePair("name", "value) }); httpClient.executeMethod(httpMethod); postMethod.getResponseBodyAsStream(); postMethod.releaseConnection(); 它不断返回500。服务提供商说我需要发送JSON。Apache HttpClient 3.1+如何完成?

5
在多线程环境中使用HttpClient的最佳实践
一段时间以来,我一直在多线程环境中使用HttpClient。对于每个线程,当它启动连接时,它将创建一个全新的HttpClient实例。 最近,我发现通过使用这种方法,它可能导致用户打开了太多端口,并且大多数连接都处于TIME_WAIT状态。 http://www.opensubscriber.com/message/commons-httpclient-dev@jakarta.apache.org/86045.html 因此,不是每个线程都这样做: HttpClient c = new HttpClient(); try { c.executeMethod(method); } catch(...) { } finally { method.releaseConnection(); } 我们计划拥有: [方法A] // global_c is initialized once through // HttpClient global_c = new HttpClient(new MultiThreadedHttpConnectionManager()); try { global_c.executeMethod(method); } catch(...) { } finally { method.releaseConnection(); } 在正常情况下,将由50个以上的++线程同时访问global_c。我想知道,这会造成性能问题吗?MultiThreadedHttpConnectionManager是否使用无锁机制来实现其线程安全策略? 如果10个线程正在使用global_c,其他40个线程是否将被锁定? 还是在每个线程中创建一个HttpClient实例,但显式释放连接管理器会更好? [方法B] …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.