【问题标题】:Robovm failing to downloading images over httpsRobovm 无法通过 https 下载图像
【发布时间】:2015-02-01 16:26:24
【问题描述】:

我正在尝试使用 httpurl 连接从 fb 下载头像图像。这在安卓上运行良好。如果我从非 SSL 服务器下载任意图像,它也适用于带有 robovm 的 iOS。如果我尝试在 iOS 上下载 Facebook 头像,几乎每次都会失败。有时它确实有效(似乎是随机的)。我应该为 iOS 使用不同的方法吗?

我使用以下代码下载我的图像(在单独的线程中)

HttpURLConnection conn= (HttpURLConnection)url.openConnection(); 
conn.setDoInput(true); 
conn.connect(); 
int length = conn.getContentLength(); 
if(length<=0) return null; 
InputStream is = conn.getInputStream();
DataInputStream dis = new DataInputStream(is);
byte[] data = new byte[length]; 
dis.readFully(data); 
Pixmap pixmap = new Pixmap(data, 0, data.length);

我在 try/catch/finally 块中运行此代码,并且代码在 connect() 之后立即跳到 finally(我断开连接)。它会抛出 IllegalMonitorStateException。

java.lang.IllegalMonitorStateException: unlock of unowned monitor
java.lang.IllegalMonitorStateException: unlock of unowned monitor
at com.android.okhttp.Connection.upgradeToTls(Connection.java)
at com.android.okhttp.Connection.connect(Connection.java)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java)
at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java)
at com.android.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java)
at bla.helpers.ImageManager.syncDownloadPixmapFromURL(ImageManager.java)
at bla.helpers.ImageManager.access$1(ImageManager.java)
at bla.helpers.ImageManager$2.run(ImageManager.java)
at java.lang.Thread.run(Thread.java)
at com.android.okhttp.Connection.upgradeToTls(Connection.java)
at com.android.okhttp.Connection.connect(Connection.java)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java)
at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java)
at com.android.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java)
at bla.helpers.ImageManager.syncDownloadPixmapFromURL(ImageManager.java)
at bla.helpers.ImageManager.access$1(ImageManager.java)
at bla.helpers.ImageManager$2.run(ImageManager.java)
at java.lang.Thread.run(Thread.java)

【问题讨论】:

  • 遇到什么错误或当它不起作用时会发生什么?
  • 它挂在 conn.connect 上。除非我指定超时它只是不报告/抛出任何东西。 (我在这些代码行之间使用简单的日志行进行调试,在 conn.connect() 之后不再报告)
  • 用一些新信息更新了我的问题
  • HTTP 存在一些未决问题,请检查您的版本和以下问题:github.com/robovm/robovm/issues/715
  • 这可能是相关的,尽管据说该错误不会出现在开发模式(我正在使用它)中,并且实际崩溃发生在稍微不同的部分(upgradeToTls 与 TrustedCertificateKeyStoreSpi)错误(IllegalMonitorStateException 与 ExceptionInInitializerError)。我将在今天晚些时候查看最新的快照。

标签: java ios facebook-graph-api libgdx robovm


【解决方案1】:

完全重新安装 roboVM 插件后,此问题已修复。我不知道真正的问题是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多