Robovm 无法通过 https 下载图像
Robovm failing to downloading images over https
我正在尝试使用 httpurl 连接从 fb 下载头像图像。这适用于 android。如果我从非 SSL 服务器下载任意图像,它也可以在 iOS 上使用 robovm。如果我尝试在 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() 之后的最后(我断开连接的地方)。它抛出 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(ImageManager.java)
at bla.helpers.ImageManager.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(ImageManager.java)
at bla.helpers.ImageManager.run(ImageManager.java)
at java.lang.Thread.run(Thread.java)
此问题在完全重新安装 roboVM 插件后得到解决。我不知道真正的问题是什么。
我正在尝试使用 httpurl 连接从 fb 下载头像图像。这适用于 android。如果我从非 SSL 服务器下载任意图像,它也可以在 iOS 上使用 robovm。如果我尝试在 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() 之后的最后(我断开连接的地方)。它抛出 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(ImageManager.java)
at bla.helpers.ImageManager.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(ImageManager.java)
at bla.helpers.ImageManager.run(ImageManager.java)
at java.lang.Thread.run(Thread.java)
此问题在完全重新安装 roboVM 插件后得到解决。我不知道真正的问题是什么。