问题标签 [httpurlconnection]
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 - 将 HttpUrlConnection 无限期地打开到远程 REST 端点是否合理?
我希望通过一个简单的 REST 风格的 HTTP 帖子优化一个持续运行并频繁调用(平均每秒 > 1 次)外部 API 的进程。我注意到的一件事是,目前,根据以下结构,为每个 API 调用创建和关闭 HttpUrlConnection(为了便于阅读,删除了非必要代码和错误处理)。
我没有直接处理http协议的丰富经验,但是根据一般的套接字常识/知识,似乎只创建一次连接并重新使用它,然后重新初始化它会更有效在一个问题上,避免每次都进行连接协商,像这样:
我的问题是:
- 一般来说,这是一个合理的优化吗(速度增加会很明显)吗?
假设是:
- 我应该重用输出流以及连接吗?
- 仅在错误时重新初始化连接是否合理,或者我应该在一定数量的请求/时间后这样做?
java - 如何修改 HttpUrlConnection 的标头
我试图稍微改进 Java Html 文档,但我遇到了HttpUrlConntion
. 一件事是,如果用户代理是 Java VM,某些服务器会阻止请求。另一个问题是HttpUrlConnection
没有设置Referrer
orLocation
头字段。由于几个站点使用这些字段来验证内容是从他们自己的站点访问的,因此我也被阻止在这里。据我所知,唯一的解决方案是替换 HTTP 协议的 URL 处理程序。或者有什么办法可以修改默认的 HTTP Handler?
java - 连接到需要使用 Java 进行身份验证的远程 URL
如何连接到需要身份验证的 Java 中的远程 URL。我正在尝试找到一种方法来修改以下代码,以便能够以编程方式提供用户名/密码,因此它不会抛出 401。
java - Android下载二进制文件问题
我在从 Internet 下载我的应用程序中的二进制文件(视频)时遇到问题。在 Quicktime 中,如果我直接下载它,它可以正常工作,但是通过我的应用程序它会变得一团糟(即使它们在文本编辑器中看起来完全一样)。这是一个例子:
java - Java Authenticator 基于每个连接?
我正在构建一个与使用基本身份验证的 REST 接口通信的 Eclipse 插件。当身份验证失败时,我想弹出插件的设置对话框并重试。通常我可以使用 staticAuthenticator.setDefault()
为此设置 all 的身份验证器HttpURLConnection
,但是由于我正在编写插件,因此我不想覆盖 Eclipse 的默认值Authenticator
(org.eclipse.ui.internal.net.auth
);
我想Authenticator
在加载之前设置我的自定义并在之后将 Eclipse 的默认设置放回原处,但我想这会导致多线程的各种竞争问题,所以我很快就失去了这个想法。
谷歌搜索产生各种结果,基本上告诉我这是不可能的:
Java URLConnection API 应该有一个 setAuthenticator(Authenticator) 方法,以便在需要身份验证的多线程上下文中更轻松地使用此类。
如果应用程序包含很少的第三方插件,并且每个插件都使用自己的 Authenticator,我们应该怎么做?每次调用“Authenticator.setDefault()”方法都会重写之前定义的 Authenticator...
是否有任何不同的方法可以帮助我克服这个问题?
java - 来自 HttpURLConnection 的意外结果 - 读取远程二进制文件
我正在尝试从互联网上读取远程二进制文件(例如图像),如下所示:
在本地或本地 Web 服务器 (localhost) 中,它可以完美运行。
但。然后 myUrl 是某个远程 Web 服务器上文件的 URL - 它返回意外结果。例如,从给定文件的来源看来,它似乎重复了一些包(我认为是因为以前的包损坏或某些包),并且由于这种重复,生成的文件通常比原始文件大 10%。因此文件已损坏,无法使用图像查看器正确打开。
我该如何解决这个问题?
java - 在 Java 中读取错误响应正文
在 Java 中,当 HTTP 结果为 404 范围时,此代码会引发异常:
就我而言,我碰巧知道内容是 404,但我仍然想阅读响应的正文。
(在我的实际情况下,响应代码是 403,但响应的正文解释了拒绝的原因,我想向用户显示。)
如何访问响应正文?
java - HttpURLConnections 忽略超时并且永不返回
尝试从 HttpURLConnection 打开 InputStream 时,我们从某些服务器随机得到一些意外结果。似乎这些服务器会接受连接并使用“保持活动”标头进行回复,这将使 Socket 保持打开状态,但不允许将数据发送回流。
这种情况使多线程爬虫的尝试有点“复杂”,因为如果某些连接被卡住,运行它的线程将永远不会返回......否认它的池的完成,该池在控制器中派生,认为某些线程是还在工作。
是否有某种方法可以读取连接响应标头以识别“保持活动”的答案并避免尝试打开流?
java - 如何在 HttpURLConnection 中发送 PUT、DELETE HTTP 请求?
我想知道是否可以将 PUT、DELETE 请求(实际上)发送java.net.HttpURLConnection
到基于 HTTP 的 URL。
我已经阅读了很多描述如何发送 GET、POST、TRACE、OPTIONS 请求的文章,但我仍然没有找到任何成功执行 PUT 和 DELETE 请求的示例代码。
java - Perl 中有没有类似 HttpURLConnection 的东西?
我想创建一个到 PHP 脚本的 HTTPURLConnection 并获取脚本返回的 HTTP 响应。有没有办法在 Perl 中做到这一点?
简而言之,我希望 Perl 等同于以下内容:
我正在尝试搜索类似的 perl 模块,但找不到。任何帮助都会很有用。