问题标签 [apache-commons-httpclient]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java HttpClient 或 PostMethod 将返回数据截断为 64k
我正在使用 Apache Commons HttpClient 从服务器中获取一些数据。我的问题是返回的 XML 数据总是被截断为前 64k。我希望这可能只是对相关对象设置限制的情况,但显然不是 - 或者至少,我找不到有关这种方法的任何信息。我假设这是一个客户端问题,因为服务器属于另一家公司,并且可能会将数据很好地提供给其他所有人。
有任何想法吗?
顺便说一句,我的代码非常简单:
仅供参考,使用 InputStreams 而不是 getResponseBodyAsString() 方法的以下代码也会发生同样的事情。
那么,您知道某处是否设置了限制吗?字符串响应总是64k 的事实似乎表明必须有。但是哪里?!
谢谢
阿拉斯泰尔
java - commons-httpclient 在执行方法后从 Host 标头中删除了端口 80
我使用指定的主机和端口创建了一个 GET HTTPMethod,并从 Httpclient.executeMethod() 执行它。但是,当主机收到它时,该端口已从 HTTP 请求中的主机标头中截断。
HttpMethod执行前的Host头信息如下: User-Agent: Me Host: stackoverflow.com:80
主办方收到时:
用户代理:Jakarta Commons-HttpClient/3.1 主机:stackoverflow.com
我已经看到可以在执行之前在 HTTPClient 中设置 User-Agent 的帖子。但是,我已经通过 HostConfiguration 对主机进行了尝试,但没有运气。任何人以前都看到过这个问题并解决了它,这样主机就不会改变?
当我使用其他 httpclient 包或点击不同的端口时,这不会发生。
java - 从 HttpClient 3.x 迁移到 4.x
我们有一些使用 commons-httpclient-3.1 编写的代码,需要转换为 4.1。我只是对此有点熟悉,现在正在阅读 4.1 httpclient 教程。
我在这里看到了一些帖子(例如从 HttpClient 3 转换为 4,但这是关于特定构造的)。似乎应该有一些文档/示例显示如何将 3.x 的使用升级到 4.x ?
一个具体的例子:替换使用 org.apache.commons.httpclient.HttpState
java - 如何让 Apache Http 客户端在超时后恢复等待响应?
我使用executeMethod
Apache Http 客户端,它会阻塞直到它收到服务器响应。我可以设置超时,但是一旦超时到期,客户端似乎无法继续等待响应。
我可以让 Apache Http 客户端在超时后恢复等待响应吗?
java - Commons HttpClient getResponse 需要很长时间 200 秒
我在这种方法中没有改变任何东西,但突然它需要很长时间。下面的代码示例会产生此错误。
编辑:我在单个 java 应用程序中提取了该方法并尝试加载文件并且我有相同的超时。他通过这个循环 HttpMethodBase:691 的 3 或 4 时间,他在我的本地电脑上停止了 500 秒,并且线程正在休眠。睡觉后下一行是outstream.close();
编辑:如果您想在家尝试,这是示例代码:) (httpClient 3.1)
java - 如何重用httpclient连接来获取多个小文件
我正在使用 httpclient 从服务器连续下载多个小文件。所以我想重用httpclient连接以避免花费大量时间来分配新连接。
而且我已经有一些客户端代码尝试重用连接,并将现有连接的空闲超时设置为 3 分钟。
然而,来自服务器的响应总是包含“Connection: close[\r][\n]”,httpclient 库在遇到此类标头后立即释放连接。
如何让 httpclient 忽略来自服务器的响应,或者我发布的哪个标头可以让服务器不再返回这样的关闭标头?
java - Java HTTP NTLM 实现差异
此链接详细介绍了各种 http 客户端 java 实现。我正在寻找任何可以提供有关其 NTLM 协议实现差异的信息的链接。
在其中一台 Windows 机器上,我发现 commons-http 客户端 3.1 实现失败并出现授权错误(http 状态代码 401),但 java 1.5 实现成功。由于 NTLM 身份验证协议的 java 1.5 实现不是开源的,因此我无法比较这两种实现以了解可能出了什么问题。
更新 1
我知道公共 http 客户端不支持 NTLM v2 的事实。此链接提供了各种 java http 客户端实现之间的比较,并提到 apache http 客户端提供了NTLM 协议的部分实现。它没有详细说明它。
在进一步解决问题时,我还发现此链接提供的 NTLM 实现结合HTTPClient可以在 Windows 机器上运行(我上面提到的 commons http 客户端实现不起作用)。
更新 2
通过嗅探数据包(使用wirehack),我意识到commons http 客户端3.1 ntlm 协议实现不会在Type 3 消息中生成NTLM 响应。这是由 JDK 实现生成的。如果 NTLM 响应数据为空,您是否知道任何表明身份验证将失败的服务器/客户端设置?(因为我们面临的身份验证失败只能在一台机器上重现。身份验证在其他地方成功。)
java - Apache HttpClient 4 和 JavaScript
我使用 Apache HttpClient 访问网页。我想点击一个链接,但该链接是 javaScript,我如何处理点击一个 javascript 链接并遵循 url 重定向?
示例 javascript 和 html 代码:
java - 如何使用 HttpClient 发送 GWT-RPC 请求?
我正在使用 Apache HTTPClient API 来发送 HTTPRequests,到目前为止,它可以处理标准请求。现在我想发送一个 GWT-RPC 请求并显示响应,但我总是从 GWT-RPC 服务器收到以下错误:
实际上,我必须在请求中发送以下数据:
但我不知道怎么做。
当我从 FireBug 中检索请求代码时,我在 post 区域中找到了上述数据作为来源。
java - HttpClient:禁用分块编码
我正在使用 Apache Commons HttpClient 和 Restlet 来调用一个安静的 Web 服务。不幸的是,我的服务器(基于 Ruby on Rails)不喜欢Transfer-Encoding: chunked
HttpClient 默认使用的。
有什么方法可以禁用客户端对 POST 的分块编码的使用?