问题标签 [urlconnection]
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 - 当我调用 getInputStream 时,Java URLConnection 使整个过程崩溃
我正在编写一个 Java 小程序,它从 Web 服务器下载图像并将它们显示给用户。它在 Java 1.6.0_3 及更高版本中运行良好,但在旧版本中,它大约每 20 次页面浏览就会使进程完全崩溃一次。Java 控制台中没有错误消息,因为该进程已完全冻结。有时我已经等了将近 15 分钟,但它永远不会解冻。
我在每一行代码之后添加了一条调试消息,并确定导致崩溃的行是:InputStream data = urlConn.getInputStream()
.
urlConn 是指向我要加载的图像的 URLConnection 对象。我已经尝试了我能想到的所有选项组合,但没有任何帮助。我无法在 Java 错误数据库或 1.6.0_3 的发行说明中找到任何内容。
有没有人遇到过这个问题?知道如何解决吗?
java - 使用 Apache 的 HttpClient 与使用 JDK 的 URLConnection 从小程序内连接到 URL
在下面的代码中,我已经验证如果使用 JDK 的 URLConnection 类,从小程序中连接到 URL 会保留浏览器的会话。但是,如果使用 Apache 的 HttpClient 库,情况并非如此。有谁知道为什么?或者,我有没有办法设置 HttpClient 实例使用的连接实例?
java - Websphere 慢速 URLConnection
我们在 Linux 环境中部署了 Websphere 6.1 版。要打开一个 https 连接,我们在一个对象上调用openConnection()
和。connect()
java.net.URL
打开此连接大约需要 3 分钟。建立连接后,我们可以非常快速地写入和读取数据。
使用 openssl 连接测试(ssh
控制台)工作得非常快。一个简单的 jar 应用程序部署在容器外部的同一台机器上,也可以正常工作,但是一旦部署在 websphere 中,就会出现问题。
我们只在 Websphere 6.1 中遇到这个问题,在 6.0 中可以正常工作
有任何想法吗?
java - 如何在高使用率的多线程环境中优化清理传出的 UrlConnection 对象?
我有一个用例,其中一个 servlet(具有相当高的并发使用率)生成一个传出 URLConnection 来检索一些数据 REST 样式,作为其正常服务器端处理逻辑的一部分。每次调用 servlet 时都会创建和使用连接,因为 URL 可能不同(但域始终相同)。我想确保它尽可能以最佳方式执行此操作,以便端口和连接保持打开的时间不会超过它们在应用程序服务器上所需的时间,而是在适用时重复使用。
Javadocs 似乎有点模糊 - 在 URLConnection 上:
“在请求之后调用 URLConnection 的 InputStream 或 OutputStream 上的 close() 方法可能会释放与此实例相关的网络资源,除非特定的协议规范为其指定了不同的行为。”
在 HttpURLConnection 上:
'每个 HttpURLConnection 实例用于发出单个请求,但到 HTTP 服务器的底层网络连接可能被其他实例透明地共享。在请求之后对 HttpURLConnection 的 InputStream 或 OutputStream 调用 close() 方法可能会释放与此实例关联的网络资源,但不会影响任何共享的持久连接。如果持续连接当时处于空闲状态,则调用 disconnect() 方法可能会关闭底层套接字。
目前,根据下面的代码,正在使用 URLConnection 并且仅关闭输入流(错误处理和 URL 读取已删除,因为它们与问题无关)。我的想法是这将清理流资源,但如果可能的话允许重新使用底层套接字(因为请求总是针对同一个域,具有不同的 URL 路径)。任何有关如何进一步优化的建议将不胜感激。
java - URLConnection.setUseCaches() 在实践中是如何工作的?
我有一个 Applet,它使用 URLConnection 通过 http 连接加载图像。我正在为所有连接设置 setUseCaches(true),但仍然没有看到任何缓存行为。我的图像的 HTTP 标头具有合理的缓存设置。如果您查看错误 4528599,就会发现这个相当神秘的声明:
Java 插件的当前版本 (1.3.1) 仅检查浏览器缓存中名称以 .jar 或 .class 结尾的文件。有人告诉我,对于 Java Plug-In 1.4,将检查浏览器缓存中的以下文件类型:.class、.jar、.zip、.jpg、.gif、.wav、.au。
当然,这在 1.6 中被标记为 FIXED,但即使在 1.6 下,我也看不到任何缓存。我的图像是 PNG 文件,在某些情况下实际上并没有以 .png 扩展名结尾。我没有看到任何缓存。
错误修复报告谈到了 1.6 统一下载引擎,但 google 似乎对此知之甚少。
这应该有效还是只是另一个损坏的 Sun“功能”。有什么方法或解决方法可以让我的小程序从浏览器缓存中加载 PNG 图像?我宁愿不实现我自己的......
更新:缓存似乎与ResponseCache实现相关联。有关其工作原理的更多信息,请参阅此技术说明。最后一行说:
Java 2 标准版中没有 URLConnection 缓存的默认实现。但是,Java Plugin 和 Java WebStart 确实提供了一个开箱即用的功能。
所以在我看来问题真的变成了:Java Plugin ResponseCache 实现是如何真正工作的?v1.4/v1.5/v.16有什么区别
有人有什么想法吗?
java - Java:如何使用 UrlConnection 发布授权请求?
我想向需要身份验证的服务器生成 POST 请求。我尝试使用以下方法:
但服务器没有收到授权数据。应该添加授权数据的行如下:
和线
还会抛出 IOException。
无论如何,如果有人可以建议对上述逻辑进行任何修复,以便使用带有 UrlConnection 的 POST 启用授权,我将非常感激。
但显然它不能按预期工作,尽管如果对 GET 请求使用相同的逻辑,一切正常。
android - 为什么在将数据发布到表单时 HttpClient 不起作用但 HttpUrlConnenction 起作用
我正在构建一个 android 应用程序,它应该在我的网站上执行 GET 以获取两个 cookie,然后使用这些 cookie 向同一站点执行发布。
如前所述,我从 GET 开始,我使用 org.apache.http.client.HttpClient 来执行此操作。
到现在为止还挺好。不要介意 requiredCookies 行,它将在 Java.net impl 中使用,因为我无法让 HttpClient 工作 =(。让我们看看不工作的 HttpClient Post 部分。
现在发生的事情是我使用存储 cookie 的 localContext 执行 POST。这行不通。我得到一个 HTTP/1.1 401 无会话。由于我没有运气,我尝试了另一种方法(java.net.HttpURLConnection)。请记住,我仍然使用相同的 GET 部分
并展示了 VIOLA a 200,一切都像魅力一样。你们有什么感想?有人可以给我一个答案,因为我无法弄清楚。
java - 在 Android/Java 上,一个连接下载了多少字节?
我正在编写的一个 Android 应用程序涉及大量的内容下载(想想 podcatcher/RSS)。
我希望能够让用户知道他们下载了多少字节,这样他们就可以决定是否要使用 Wifi。
为此,我找到了一种计算应用程序读取的字节数的方法,方法是将 an 包装InputStream
在一个简单的CountingInputStream
.
但是,这并没有考虑数据包头和 HTTP 头等基本内容。更重要的是,它没有考虑对内容进行编码的任何压缩。
那么,我的应用程序通过网络下载了多少字节?我对上传的字节数不太感兴趣,但如果知道如何,请不要害羞。
在将输入流输入 XML PullParser 时,我采用了一种相当低级的方法。我还需要做一个类似的练习,将字节(在这种情况下为图像)直接转储到 SD 卡上。
这是最好的方法吗?我错过了什么?
java - 将文件从 Java 客户端上传到 HTTP 服务器
我想将一些文件上传到 HTTP 服务器。基本上我需要的是某种带有一些参数和文件的对服务器的 POST 请求。我已经看到了仅上传文件的示例,但没有找到如何传递其他参数。
这样做的最简单和免费的解决方案是什么?有人有我可以研究的文件上传示例吗?我已经在谷歌上搜索了几个小时,但是(也许这只是其中的一天)找不到我需要的确切内容。最好的解决方案是不涉及任何第三方类或库的东西。
java - 将请求标头从请求对象复制到 urlConnection 对象
我在一个 servlet 中编写了上面的代码来发布表单,所以一些替代位置比这个 servlet,但它不起作用。可以使用 connection.setRequestProperty 将标头字段设置为它们在传入的 servlet 请求中的内容。