Это аналогичная проблема для Intermittent SSL error when uploading photos using Facebook Android SDK 3.0, но у этого вопроса нет ответов, и я хотел бы предоставить более подробную информацию в вопросе.Ошибка при загрузке фотографий с помощью Facebook SDK
Я пытаюсь загрузить фотографии в учетной записи пользователя Facebook, используя следующий код:
ArrayList<Request> requests = new ArrayList<Request>();
for (String id : ids) {
Uri uri = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id);
Bitmap b;
try {
b = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
} catch (FileNotFoundException e) {
Log.e(LOG_TAG, "Error uploading photo to facebook", e);
return;
} catch (IOException e) {
Log.e(LOG_TAG, "Error uploading photo to facebook", e);
return;
}
if (b != null) {
requests.add(Request.newUploadPhotoRequest(FacebookLoginHelper.getInstance().getActiveSession(), b,
null));
}
}
List<Response> responses = Request.executeBatchAndWait(requests);
for (Response response : responses) {
if (response.getError() == null) {
Log.w(LOG_TAG, "Successfully uploaded image");
} else {
Log.w(LOG_TAG, "Error uploading image: " + response.getError().getErrorMessage());
}
}
Я получаю эту ошибку:
02-28 11:26:52.936: W/System.err(5848): javax.net.ssl.SSLException: Write error: ssl=0x72be0428: I/O error during system call, Broken pipe
02-28 11:26:52.936: W/System.err(5848): at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_write(Native Method)
02-28 11:26:52.936: W/System.err(5848): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLOutputStream.write(OpenSSLSocketImpl.java:706)
02-28 11:26:52.936: W/System.err(5848): at libcore.net.http.ChunkedOutputStream.writeHex(ChunkedOutputStream.java:102)
02-28 11:26:52.936: W/System.err(5848): at libcore.net.http.ChunkedOutputStream.writeBufferedChunkToSocket(ChunkedOutputStream.java:128)
02-28 11:26:52.946: W/System.err(5848): at libcore.net.http.ChunkedOutputStream.write(ChunkedOutputStream.java:77)
02-28 11:26:52.946: W/System.err(5848): at java.io.BufferedOutputStream.flushInternal(BufferedOutputStream.java:185)
02-28 11:26:52.946: W/System.err(5848): at java.io.BufferedOutputStream.write(BufferedOutputStream.java:139)
02-28 11:26:52.946: W/System.err(5848): at android.graphics.Bitmap.nativeCompress(Native Method)
02-28 11:26:52.946: W/System.err(5848): at android.graphics.Bitmap.compress(Bitmap.java:875)
02-28 11:26:52.946: W/System.err(5848): at com.facebook.Request$Serializer.writeBitmap(Request.java:1688)
02-28 11:26:52.946: W/System.err(5848): at com.facebook.Request$Serializer.writeObject(Request.java:1666)
02-28 11:26:52.946: W/System.err(5848): at com.facebook.Request.serializeAttachments(Request.java:1569)
02-28 11:26:52.946: W/System.err(5848): at com.facebook.Request.serializeToUrlConnection(Request.java:1467)
02-28 11:26:52.946: W/System.err(5848): at com.facebook.Request.toHttpConnection(Request.java:933)
02-28 11:26:52.946: W/System.err(5848): at com.facebook.Request.executeBatchAndWait(Request.java:1027)
02-28 11:26:52.946: W/System.err(5848): at com.facebook.Request.executeBatchAndWait(Request.java:1003)
02-28 11:26:52.946: W/System.err(5848): at com.mycompany.mypackage.services.FacebookPhotoUploadService.onHandleIntent(FacebookPhotoUploadService.java:50)
02-28 11:26:52.946: W/System.err(5848): at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
02-28 11:26:52.946: W/System.err(5848): at android.os.Handler.dispatchMessage(Handler.java:99)
02-28 11:26:52.946: W/System.err(5848): at android.os.Looper.loop(Looper.java:137)
02-28 11:26:52.946: W/System.err(5848): at android.os.HandlerThread.run(HandlerThread.java:60)
02-28 11:26:52.946: D/skia(5848): ------- write threw an exception
02-28 11:26:52.946: W/com.mycompany.mypackage.services.FacebookPhotoUploadService(5848): Error uploading image: com.facebook.FacebookException: could not construct request body
Вещи, которые я уверен:
- растровое изображение Я посылаю запрос действительно
- I 'правильно подключился к Facebook с активной сессией
Я смог получить это, чтобы успешно работать дважды из примерно 15 или 20 попыток (проверено, перейдя в Facebook в моем браузере и увидев изображение там).
Я не думаю, что это важно, но это происходит в методе onHandleIntent()
IntentService
.
У меня только то же самое случилось со мной. Похоже, что изображение не загрузилось для меня, даже если запрос занял довольно много времени, как если бы он был загружен успешно. Мне интересно узнать, в чем проблема. – Wenger
В конце концов я переписал свою услугу, чтобы использовать устаревшие вызовы Facebook SDK: 'new Facebook (« appID »). Request (« me/photos », params,« POST »)', который РАБОТАЕТ, но не идеален. Я не понимаю, почему это работает, потому что базовый вызов POST тот же, насколько я могу судить. – howettl
Не может ли это иметь какое-то отношение к этому? 'System.setProperty (« java.net.preferIPv6Addresses »,« false »);' – l33t