问题标签 [httpsurlconnection]

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.

0 投票
4 回答
13428 浏览

java - Android:java.lang.IllegalStateException:已经连接

我正在测试一个代码示例,但它总是错误connection.setDoInput(true);

错误日志是java.lang.IllegalStateException: Already connected。我已经尝试过这些,但没有一个有效:

编辑:即使我没有打电话connection.connect(),它仍然给出同样的错误already connected

0 投票
4 回答
1604 浏览

java - 异常后使用java http连接实例

以下代码是否安全:

特别是,在 InterruptedIOException(比如读取超时)的情况下调用类似的方法是否安全getContentEncoding()?据我了解,此方法需要实时连接才能读取 HTTP(S) 标头。

更新(附加信息):

这个问题源于一个真实的系统体验。我相信,该系统当时是在 Oracle/Sun JVM 1.6 上运行的。代码几乎相同:

问题发生在tryGetResponseon HTTPS请求中:

调用中的套接字连接(或读取)时系统自发挂起getContentEncoding()

恰好在SocketTimeoutException初始代码中抛出。

因此,似乎getContentEncoding()尝试(或在 Java 6 中尝试)建立新连接而没有设置超时。

0 投票
1 回答
1429 浏览

android - 如何停止 HttpConnection.getInputStream() 的执行?

问题

我正在运行其中的方法HttpsUrlConnection.getInputStream(),该方法AsyncTask.doInBackground()DialogFragment.

我希望它在用户退出片段时终止。

如果我不这样做,无用的数据将继续在后台加载。

我试过的

我尝试在回调中将URLConnection对象设置为 ,但它不会阻止该方法执行。我无法在 UI 线程中调用,并且在另一个 AsyncTask 中将无效,因为它们是按顺序执行的。nullonDismiss()getInputStream()mConnection.disconnect()

AsyncTask.cancel()没有用,因为它不会停止该doInBackground()方法。

问题

如何强制从 getInputStream() 方法返回?


代码

根据@CarlosRobles 的要求,这是我的 doInBackground() 的代码


其他注意事项

我刚刚检查了上面代码片段中调用的所有函数的执行时间,我发现UrlConnection.getResponseCode(), 是迄今为止运行时间最长的函数。我想这是由于对它UrlConnection.getInputStream()内部的调用。后来,inputStream 总是被缓存到连接对象中,这就是为什么UrlConnection.getInputstream()在我的函数中几乎没有时间。

0 投票
0 回答
300 浏览

java - 通过 HttpsUrlConnection 访问时出现超时异常

我正在尝试使用 Eclipse IDE 通过 Java 代码访问某些网站(例如https://www.yahoo.com),但我遇到了连接超时异常。

我还检查了 eclipse 是否能够连接到互联网,并且同一网站在 eclipse 内部浏览器甚至 chrome 中都可以正常运行。

代码如下

}

实现 X509TrustManager 的 MyTrustManager 类

}

运行此代码后,应用程序等待几秒钟,然后抛出以下异常。

请帮我找出我错在哪里!!!

0 投票
0 回答
11138 浏览

android - 在 Android 中使用证书进行 SSL 客户端身份验证

我正在编写一个连接到服务器以调用一些 Web 服务的 Android 应用程序。此服务器使用 SSL 的自签名证书,并且需要客户端证书进行身份验证。

当我使用 Android Chrome 浏览器或 iPhone 上的 safari 浏览器连接到服务器时,它可以完美运行。SSL 连接正在建立,客户端证书身份验证成功并重定向到我的 Web 服务。但是当我与其他浏览器连接时,如股票 android 浏览器、dolphin 等,它会导致网络超时。

此外,当我连接我的 Android 应用程序时,我收到以下错误:

我关注了 chariotsolutions 的博客: http: //chariotsolutions.com/blog/post/https-with-client-certificates-on/

我还使用 portecle GUI 将客户端证书转换为 BKS 格式。

这是我的代码:

注意:出于测试目的,我还可以选择在没有客户端证书身份验证的情况下连接到服务器(导致不同的 URL)。在这种情况下,上面的代码是相同的,但只有context.init(null, tmf.getTrustManagers(), null)。这是完美的工作,建立一个 SSL 连接并将我重定向到我的 Web 服务。

真正困扰我的是,Iphone 上的 Chrome 和 Safari 都能正常工作。所以我想问题可能只出在我的 Android 代码中?

有没有人有类似的问题并且有一个想法或者可能是他的解决方案?

非常感谢!

编辑

我忘了提一下,我还设置了一个 Cookie 管理器,这是 SSL 连接首先需要的。(在 onCreate() 中的 MainActivity 中设置)

没有它,我在尝试建立 SSL 连接(没有客户端证书)时遇到了同样的错误,但遗憾的是它对客户端证书也没有帮助。

更新#2

从 nelenkov.blogspot.de/2011/12/using-custom-certificate-trust-store-on.html(感谢@Nikolay 的这篇精彩文章)和他在 Github 上的 Android Connectiontest Application 获得了很多背景信息,我发现了一些有趣的东西。

服务器设置为在连接时给我一个 Cookie。如果我在前面的步骤中没有客户端身份验证进行连接,那么连接“有效”,因此在第二次连接(使用客户端身份验证)时,他只验证该 Cookie 并让我通过。

我终于注意到的第二件事,服务器给了我一个Nonce。我猜连接应该通过返回该 Nonce 自动遵循该重定向。一些浏览器,如 Firefox 和普通浏览器正在停止连接,(在使用 Responsecode 302 重定向之后)并最终以 404 停止,从而产生类似 ..policy?nonce=fno3i9Hsfn3uz 的 URL。然后我必须手动重新加载此 URL 才能访问 Web 服务。遗憾的是,这不适用于我的 Android 应用程序。

我想,这个问题可能是服务器端的错误配置?

0 投票
1 回答
510 浏览

java - 带有 POST 和不可变 doOutput 变量的 HttpsURLConnection 上的 FileNotFoundException

我正在尝试在我的 android 应用程序中将一些数据发布到 https url,以获得 json 格式的响应。

我面临两个问题:

is = conn.getInputStream();

投掷

java.io.FileNotFoundException

如果我对 HttpsURLConnection 做错了什么,我不明白。

当我调试代码时出现第二个问题(使用 eclipse);我在之后设置了一个断点

conn.setDoOutput(true);

并且,在检查conn值时,我看到变量doOutput仍然设置为false并键入GET


我的 https POST 方法如下,POSTData扩展类在哪里ArrayList<NameValuePair>


一点更新:显然 eclipse debug 对我撒谎,在 netbeans 上运行和调试显示POST连接。错误似乎与我传递给 url 的参数有关。

0 投票
2 回答
1592 浏览

android - HttpsUrlConnection EOFException

我将以下代码用于发布请求

当我通过 http 使用它时,一切正常,但通过 https 我得到

我在 httpsurlconnection 和可能的解决方案中发现了关于回收连接错误的问题:

但这对我不起作用。

0 投票
0 回答
767 浏览

java - HttpsURLConnection 尝试添加 cookie 时已连接

我收到此堆栈跟踪的异常

这些是 HttpHandler.PostHttps 中的行

这些是 CookieManager.setCookies 中的

我知道在连接打开时我无法设置 cookie 标头。但是除了使用 openConnection() 初始化对象然后添加 cookie 之外,我不会在连接的对象上调用任何东西。

我也知道调用其他一些方法,例如 getHeaderFiles 或运行流将打开连接,并且不会调用此类方法。

编辑:

我使用的是 JDK 1.6.0.39 我下载了最新版本 1.7.0.51 并已修复。原来这毕竟是一个版本问题。

编辑2:

它再次出现,奇怪的是我必须添加。

0 投票
1 回答
252 浏览

java - 在 Java (Android) 中重新启用 SSL 验证

在我的 Android 应用程序(这是一个测试应用程序)中,我执行以下 disableSslValidation 方法来禁用 SSL 证书验证。现在无需重新启动该过程,我想启用 SSL 证书验证。我该如何做到这一点?

编辑:我完全了解禁用 SSL 验证所涉及的风险,并在知情的情况下接受上述风险。

0 投票
0 回答
515 浏览

java - URLConnection setRequestProperty 内容长度不正确

我想向服务器发送信息,但它只是看到的部分信息Content-Length是不正确的。

我的代码:

只发送了 680 个字节,但应该是 2000 左右。

命令:

结果:

此命令未更改Content-Length