2013-02-28 4 views
2

Это аналогичная проблема для 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.

+0

У меня только то же самое случилось со мной. Похоже, что изображение не загрузилось для меня, даже если запрос занял довольно много времени, как если бы он был загружен успешно. Мне интересно узнать, в чем проблема. – Wenger

+0

В конце концов я переписал свою услугу, чтобы использовать устаревшие вызовы Facebook SDK: 'new Facebook (« appID »). Request (« me/photos », params,« POST »)', который РАБОТАЕТ, но не идеален. Я не понимаю, почему это работает, потому что базовый вызов POST тот же, насколько я могу судить. – howettl

+0

Не может ли это иметь какое-то отношение к этому? 'System.setProperty (« java.net.preferIPv6Addresses »,« false »);' – l33t

ответ

0

Я нашел решение этой проблемы, которое включает в себя обход Facebook SDK и выполнение HTTP-вызовов самостоятельно. Подробности здесь: https://stackoverflow.com/a/15260387/758458

+1

Несмотря на то, что это может решить проблему, SDK все еще сломан. Мы должны зарегистрировать ошибку, чтобы команда Facebook могла ее исправить! – l33t

 Смежные вопросы

  • Нет связанных вопросов^_^