问题标签 [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.
java - Android:java.lang.IllegalStateException:已经连接
我正在测试一个代码示例,但它总是错误connection.setDoInput(true);
错误日志是java.lang.IllegalStateException: Already connected
。我已经尝试过这些,但没有一个有效:
编辑:即使我没有打电话connection.connect()
,它仍然给出同样的错误already connected
。
java - 异常后使用java http连接实例
以下代码是否安全:
特别是,在 InterruptedIOException(比如读取超时)的情况下调用类似的方法是否安全getContentEncoding()
?据我了解,此方法需要实时连接才能读取 HTTP(S) 标头。
更新(附加信息):
这个问题源于一个真实的系统体验。我相信,该系统当时是在 Oracle/Sun JVM 1.6 上运行的。代码几乎相同:
问题发生在tryGetResponse
on HTTPS请求中:
调用中的套接字连接(或读取)时系统自发挂起getContentEncoding()
:
恰好在SocketTimeoutException
初始代码中抛出。
因此,似乎getContentEncoding()
尝试(或在 Java 6 中尝试)建立新连接而没有设置超时。
android - 如何停止 HttpConnection.getInputStream() 的执行?
问题
我正在运行其中的方法HttpsUrlConnection.getInputStream()
,该方法AsyncTask.doInBackground()
从DialogFragment
.
我希望它在用户退出片段时终止。
如果我不这样做,无用的数据将继续在后台加载。
我试过的
我尝试在回调中将URLConnection
对象设置为 ,但它不会阻止该方法执行。我无法在 UI 线程中调用,并且在另一个 AsyncTask 中将无效,因为它们是按顺序执行的。null
onDismiss()
getInputStream()
mConnection.disconnect()
AsyncTask.cancel()
没有用,因为它不会停止该doInBackground()
方法。
问题
如何强制从 getInputStream() 方法返回?
代码
根据@CarlosRobles 的要求,这是我的 doInBackground() 的代码
其他注意事项
我刚刚检查了上面代码片段中调用的所有函数的执行时间,我发现UrlConnection.getResponseCode()
, 是迄今为止运行时间最长的函数。我想这是由于对它UrlConnection.getInputStream()
内部的调用。后来,inputStream 总是被缓存到连接对象中,这就是为什么UrlConnection.getInputstream()
在我的函数中几乎没有时间。
java - 通过 HttpsUrlConnection 访问时出现超时异常
我正在尝试使用 Eclipse IDE 通过 Java 代码访问某些网站(例如https://www.yahoo.com),但我遇到了连接超时异常。
我还检查了 eclipse 是否能够连接到互联网,并且同一网站在 eclipse 内部浏览器甚至 chrome 中都可以正常运行。
代码如下
}
实现 X509TrustManager 的 MyTrustManager 类
}
运行此代码后,应用程序等待几秒钟,然后抛出以下异常。
请帮我找出我错在哪里!!!
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 应用程序。
我想,这个问题可能是服务器端的错误配置?
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 的参数有关。
android - HttpsUrlConnection EOFException
我将以下代码用于发布请求
当我通过 http 使用它时,一切正常,但通过 https 我得到
我在 httpsurlconnection 和可能的解决方案中发现了关于回收连接错误的问题:
但这对我不起作用。
java - HttpsURLConnection 尝试添加 cookie 时已连接
我收到此堆栈跟踪的异常
这些是 HttpHandler.PostHttps 中的行
这些是 CookieManager.setCookies 中的
我知道在连接打开时我无法设置 cookie 标头。但是除了使用 openConnection() 初始化对象然后添加 cookie 之外,我不会在连接的对象上调用任何东西。
我也知道调用其他一些方法,例如 getHeaderFiles 或运行流将打开连接,并且不会调用此类方法。
编辑:
我使用的是 JDK 1.6.0.39 我下载了最新版本 1.7.0.51 并已修复。原来这毕竟是一个版本问题。
编辑2:
它再次出现,奇怪的是我必须添加。
java - 在 Java (Android) 中重新启用 SSL 验证
在我的 Android 应用程序(这是一个测试应用程序)中,我执行以下 disableSslValidation 方法来禁用 SSL 证书验证。现在无需重新启动该过程,我想启用 SSL 证书验证。我该如何做到这一点?
编辑:我完全了解禁用 SSL 验证所涉及的风险,并在知情的情况下接受上述风险。
java - URLConnection setRequestProperty 内容长度不正确
我想向服务器发送信息,但它只是看到的部分信息Content-Length
是不正确的。
我的代码:
只发送了 680 个字节,但应该是 2000 左右。
命令:
结果:
此命令未更改Content-Length
: