|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
имеем девайс с android 2.2 аплоадим на сервер картинки используя следующий код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
класс аплоада тут: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109.
в результате в большинстве случаев получаем на выходе битую картинку пример: картинка в оригинале - взята с sdcard то, что приходит на сервер на сервере тривиальнейший скрипт: <?php move_uploaded_file(blablabla ?> размер обоих файлов одинаковый. при сравнении оказывается, что какие-то блоки (в данном случае один, но у клиентов вообще вся картинка в хлам) бьются. причем блоки разной длины бывают ------------------------------------------------------------------------ 00051330 | 49 69 11 4B 9D E6 | 00051330 | DA BB 10 70 DC 77 | 00051338 | 2D B9 1B B9 E4 81 5A E6 | 00051338 | AC 20 C7 90 7E B4 33 80 | 00051340 | D4 14 B0 F4 EA 3D D1 E9 | 00051340 | 31 9A B8 C2 29 83 66 9C | 00051348 | 61 9D E3 38 F7 36 DE 63 | 00051348 | 9A 84 8E 73 9A 8D B5 29 | 00051350 | 25 9D 9D C4 64 C3 23 AA | 00051350 | 18 60 1C 0F 7A CF 33 01 | 00051358 | 4A EB 08 C3 97 7C 8C 36 | 00051358 | D4 F0 7A D3 24 BA 85 71 | 00051360 | 73 F5 E3 15 14 5B BC C1 | 00051360 | F3 0A 76 8A D6 C4 36 5E | 00051368 | B9 A4 49 06 71 1B 11 87 | 00051368 | 7B B9 5F 20 E3 A5 46 F2 | 00051370 | 39 E7 76 7B 8F 5F | 00051370 | B8 1D 4E 6B 36 6D | ------------------------------------------------------------------------ причем картинка может и нормально дойти, а может и побиться по дороге пробовал делать аплоад через apache httpmime 4.1 - результат тот же. пробовал сменить сервер - 0 эмоций. то же самое да. вся эта процедура вызывается из отдельного треда. но в 1 момент времени только 1 тред работает. по логкату смотрел - все путем. в чем может быть проблема? сидел, размышлял. может быть проблема где-то в stream'ах и я что-то не то делаю? в http ведь нет коррекции ошибок, за все отвечает tcp и он просто не пропустит битый блок данных... спасибо заранее за ответы. надеюсь подскажете как решить проблему, а то бьюсь третий день уже. только караул еще не кричу... =) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2011, 15:31 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
решил проверить, может FileInputStream глючит как-то изменил немного код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
в результате, когда картинка на сервере аплоадится битая, файл сохраняется на sd идеально.. это какой-то баг в HttpURLConnection или у меня совсем кривые руки? =) люди, SOS, ПОМОГИТЕ! =) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2011, 17:20 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
Методы работы с IO у вас в стиле "доку не читал, догадался по названиям методов" перепишите чтение и запись более традиционным способом. Посмотрите примеры http://www.exampledepot.com/egs/java.io/CopyFile.html http://www.exampledepot.com/egs/java.io/File2ByteArray.html ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2011, 17:35 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
Blazkowicz, пусть так, но сути это не меняет. размер на сервере - идентичный. но данные внутри покоцаные в той или иной степени. если вы мне подскажете каким образом порча данных при передаче по http может быть вызвана "не совсем корректным с точки зрения guru" написанием кода - буду очень благодарен на предмет "перепишите все" - бесполезно. в оригинале использовалась апачевская httpclient и конструкция была предельно простая: reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); reqEntity.addPart("image", new FileBody(new File(...)), "image/jpeg")); и далее через defaulthttpclient результат был тот же. что-то мне подсказывает, что в апачевской либе работа с IO организована правильно... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2011, 17:47 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
alex cесли вы мне подскажете каким образом порча данных при передаче по http может быть вызвана "не совсем корректным с точки зрения guru" написанием кода - буду очень благодарен Опыт подсказывает что все проблемы с порчей данных вызваны неаккуратностью работы с IO. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2011, 18:01 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
alex cна предмет "перепишите все" - бесполезно. в оригинале использовалась апачевская httpclient результат был тот же. что-то мне подсказывает, что в апачевской либе работа с IO организована правильно... Зачем вы тогда код приводите? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2011, 18:09 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
Blazkowicz, ну вот смотрите в оригинале это было примерно так: Код: plaintext 1. 2. 3. 4.
и класс собсно: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
а вот потом уже начались танцы с бубнами и пробование всего, чего угодно. тут все достаточно гладко, на мой дилетантский взгляд... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2011, 18:10 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
BlazkowiczЗачем вы тогда код приводите? вначале думал, что проблема в библиотеке.... а тут более развернутый алгоритм - больше поле для "фантазий" =) вообще, мне начинает казаться, что проблема кроется в froyo, т.е. у некоторых программ возникали проблемы подобного рода.. к сожалению, никаких workaround кроме как передавать checksum и в случае несоответствия отправлять заново, я не нашел. но в данном случае это не вариант, потому что на конечных устройствах битыми приходят 95% изображений :( т.е. это бесполезная трата трафика :( хотя вариант с кривыми руками имеет право на существование. они действительно пока не очень прямые, к сожалению... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2011, 18:18 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2011, 18:24 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
Что если попробовать entity.setChunked(true); для аплоада мелкими порциями? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2011, 18:37 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
Blazkowicz http://blog.pixelpipe.com/2010/10/22/having-corruption-issues-with-your-android-2-2-media-uploads/ да. про это я читал. но никаких решений проблемы в нете, к сожалению, не нашел. возможно плохо искал. но что-то мне подсказывает, что здесь не совсем мой случай. потому что 1) картинки берутся просто как файл с файловой системы без участия mediastore 2) размер файла-то как раз нормальный. а вот внутри - ужас :( видел посты про просто бьющиеся картинки, но там как решение - тупо проверять чексум файла. но тут не вариант - почти все картинки битые, так что будет отправлять до бесконечности, пока трафик не кончится :( ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 09:17 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
BlazkowiczЧто если попробовать entity.setChunked(true); для аплоада мелкими порциями? спасибо за идею. хоть что-то.. пойду документацию читать и пробовать. кстати, забыл сказать, что с указанным куском кода тоже была проблема, решить которую у меня ну вообще не получилось :( в связи с тем, что качество связи там, где эта программа должна использоваться, отвратительное, проводил тест: начинается аплоад картинки, в это время отключаем 3g. и висим =) таймаут срабатывает через 17-20 минут. хотя все таймауты минимальные. причем, если, например, связи нет изначально ДО того, как началась отправка, то таймаут срабатывает очень четко. т.е. даже 3g поднят, но связь плохая, 3 секунды - и sockettimeoutexception срабатывает. как только не пробовал... и как в коде у меня приведено. и наоборот, сначала создавая параметры и передавая их в конструктор httpclient'а.. и connectionmanager пробовал создавать и ему уже указывать... как об стенку горох ) не везет мне как-то с аплоадом этим ) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 09:29 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
alex cвидел посты про просто бьющиеся картинки, но там как решение - тупо проверять чексум файла. но тут не вариант - почти все картинки битые, так что будет отправлять до бесконечности, пока трафик не кончится :( Существуют восстанавливающие алгоритмы. Но тут, судя по тому что целые куски в хлам, они могут не помочь. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 09:30 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
BlazkowiczСуществуют восстанавливающие алгоритмы. Но тут, судя по тому что целые куски в хлам, они могут не помочь. да. скорее всего это не вариант. я вверху привел результат compare двух файлов... причем, это самый хороший вариант. на клиентских девайсах картинки вообще не видно. одни полоски. =) кстати, к сожалению, не нашел ничего связанного с setchunked у multipartentity вот думаю, может быть вместо content-transfer-encoding: binary попробовать через base64 кодировать. потму что текст-то врде нормально доходит.... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 10:47 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
Проблема только на железках возникает или на эмуляторе тоже? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 11:19 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
Проблема никак не связана с конкурентным доступом? Т.е. ошибка проявляется даже если никто другой ничего на сервер не аплоадит? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 11:40 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
вот на эмуляторе не пробовал, если честно... картинки с камеры берутся, записываются в файл и по мере надобности отправляются, а т.к. камеры на эмуляторе нет, то тестить там сложно. однако попробую как-то в эмулятор большую картинку запихнуть на железках = да проявляются. я на hd2 тестирую, клиентские - galaxy tab... т.е. железо, подозреваю, ни при чем. попробовал в base64.. был просто в шоке =) в общем передалал код вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
правда я не уверен, можно ли так делать.. в середине работы с потоком оборачивать его в другой поток, а потом снова с исходным работать, но флаг NO_CLOSE стоит. dos не закрывается значит... в результате теста 1 из 5 аплоадов одной и той же картинки был неправильный. причем так забавно.. идет блок base64 (я raw post data сохраняю) и поседине вот такой корявый кусок выскакивает. ================= g9jmI8frThqfw+bga5/wIxnB+nNfBM3xX1+DazyRR+ZwQzfyp7/FvXIcLKFBJAQ7+GrZ5TLu/wAD ofsex95vqXw+UZPiFEHq0ZxR/aPgEYI8QxsR2EbcV8GD4ua2kywmFBIefLZxk++KcfjHrQk8maKO ObGQvmDcw/Kl/ZE+7/AP3N9UfeX9o+AWIH/CQJuP8JRs1I934GiA3+J4GQcHrX9W2VtD8h1WpdtrxZRg49xU6tG2MtxgHrxWVFnzGAPzHGPp U3AkAZsBvvClKs6mV+zi5Sk7L0E/YRi5M+s/tvgVeT4k iwePuNT1uPBjZI8QQ4HqjD+lfHHxZ1XxN8H/ABlP4ans9+msu/TrtjzKoGSDnqRXMT/GDVICx8rK p/EzYU/WlHKnNKUZOz9CYqhKKlY+7xfeBmAP/CRREHuEanrceCWyV8RQtjqAjZH6V8Dw/G+9uiy2 9sjSAFgd3f8Awr6E+AnhHwb8cLCeS9ku4NWitftAktiPLUehB71jVy72MHUnJpfImbw8Ue6GfwcM ========================= ну и файл как раз отличается на эти несколько десятков байт. ну,думаю, может действительно дурак... дай переделаю работу с потоками так, как вы в самом начале говорили. (на самом деле код который выше - я просто скопировал с stackoverflow, т.к. утверждалось, что он заведомо рабочий, а разбираться в нюансах времени просто не было - шла череда экспериментов) получилось вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
первые 3 аплоада были удачными.. но каково же было мое удивление, когда я в 2х следующих посередине base64 данных обнаружил следующее: ======== UX5W5yTSlMH5jk9qVTxwO+D+FS9BpJDMDABB4PIp6IhBy2c0nysBk5OTyKQbUcdwf1q7alpa6j0C ouRycdRTCmD3p7KGX274pBKyMVBOAPxqWvvHtoMторым был раньше. Оно тебе надо?<br> Если тебя всё устраивает - л3jHjv60bsyeu4Ruozg/N1wKRjkkZzjmnKpQ7m7cULsJPXnn Aot5Fq17CeVyu0445zTtrEjnjvg03aX6HAz27Uske0fN17dqpRutRu3QkjIySoGV9aZyrE544yaI 8EA9M5zTthPHUkcUuVERa6jI13N0wvvT3wxIJxkY+tIgk25ONw6U4oeuSQOtGrdwd0IIVUdQfWkY ========== а в другом файле вот это: ========= UEdxCwJ5GO5poGAMHnPenmN92QQVxwKaAVXc3JHFKzZSeou4EkZPFOYGNWBGT2PtTVChQ3XNIhY5 570rdHsK3cVGIHsRzR06U7Yec8ECm4LEFjwO3pQ9GAqnnJHTr71KMkKQOD1pNy/MOoahSQvXjp9a tpDWo1kLsx7DFPEKMpZeKcUour sex partners. * Stop premature ejaculations. http://longpeni28Y4xxUgUKCPXrUbjef93mrcdLtGa+IkYOWwTwRmlALfw8Dg+1NjG7kmpIsKCDw M5xUW5Qeuwm3jGMc0gwBkD606MYPqM5px24PHGaXN0K5WxoOAR60SIGHrmkMeGGOcetOYFecYx1q ========= при этом на этом телефоне вообще ничего кроме этого приложения не запускалось может у меня на компутере вирус какой-то, который внедряет свой код в java файлы при компиляции? =) я вообще теперь не знаю чего думать ) полный дурдом в общем ) что касается доступа к серверу. на выходе стоит тупейший php скрипт, который сохраняет картинку на диск под уникальным именем. а в данный момент я вообще просто сохраняю данные POST в текстовый файл ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 12:06 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
Смените сервер. Бывают такие вирусы, которые инжектят спам в http трафик. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 12:34 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
ээээ. вирус на centos у крупной хостинговой компании? я, кстати, пробовал менять сервер на другой (уже другая хостинговая компания). результат был тот же. я писал, по-моему, об этом в самом начале. на этом же сервере хостятся куча других наших сайтов и с аплоадом картинок из браузера, через flash, да и просто передача данных с форм, проходит на ура.. проблема именно в стыковке андроид приложения и сервера :( ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 12:39 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
в общем судя по всему ,проблему на форуме решить не представляется возможным, т.к. все, кого ни спрашиваю, в шоке от такой ерунды. ) буду, наверное, аплоад отдельно от программы тестировать. напишу прогу, которая отправляет 1 и ту же картинку постоянно.. и если заработает, значит вирус - это я. и где-то намудрил. хотя как так можно намудрить - не понимаю ) спасибо, что потратили на меня свое время ) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 12:58 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
в общем резюмируя для чистоты эксперимента сделал следующую прогу. привожу весь текст Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61.
тут уж вообще негде мудрить, т.к. это весь листинг программы. причем пробовал и с httpcomponents и напрямую работая с httpconnection (строчки закомменченные) поменял сервер на вообще другой.. итог. с httpconnection - из 10 аплоадов 2 битых httpcomponents - из 13 аплоадов 4 битых я сдаюсь ) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 13:54 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
забыл сказал. используемое соединение - 3g от мегафона. через wifi нет возможности попробовать, к сожалению... сейчас буду пытаться файл загрузить на эмулятор и тестировать на эмуляторе под разными версиями android'а ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 14:00 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
Если посылать файлы размером в 1-2Кб, то они тоже могут портиться? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 14:02 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
alex couRycdRTCmD3p7KGX274pBKyMVBOAPxqWvvHtoMторым был раньше. Оно тебе надо?<br> Гугл подсказывает что кто-то в это время читал "10 причин не идти на Дэвида Айка" ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 14:11 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
У меня аналогичная проблема возникла, но только из iPhone. Пока её также не решил, если найду решение - отпишусь в этой теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 14:25 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
=) я сейчас тестирую из эмулятора... в процессе мелкие файлы не пробовал. но параллельно теми же методами отправляются обычные пост запросы размером до нескольких килобайт. там все путем. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 15:02 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
Blazkowiczalex couRycdRTCmD3p7KGX274pBKyMVBOAPxqWvvHtoMторым был раньше. Оно тебе надо?<br> Гугл подсказывает что кто-то в это время читал "10 причин не идти на Дэвида Айка" вопрос в том - кто... =) точно не я ) неужто мегафоновский 3g такой херней может страдать? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 15:07 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
вот сейчас зааплоадил 16 картинок по 4 мега кажжая через эмулятор... заняло порядочно времени. заливал, правда, через нормельную сеть. все 16 картинок идеальные... вечером еще через wifi с устройства попробую... глюк в конкретной сборке андроида? отстутсвие нормальной коррекции tcp ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 15:12 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
alex cвопрос в том - кто... =) точно не я ) неужто мегафоновский 3g такой херней может страдать? А как же остальные клиенты? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 15:12 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
alex cотстутсвие нормальной коррекции tcp ? TCP здесь, скорее всего, не при чем. Где-то буфер общий используется и не разделяется между сессиями. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 15:13 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
BlazkowiczTCP здесь, скорее всего, не при чем. Где-то буфер общий используется и не разделяется между сессиями. но вся прелесть ситуации в том, что 1) на моем устройстве кроме как эта прога вообще боьлше ничего не запускается. я хром открывал 1 раз только неделю назад. просто посмотреть как оно на андроиде выглядит. 2) конечные клиенты в данный момент аплоадят картинки из андорры через какое-то тормозное wifi соединение.. так что мегафон тут точно ни при чем... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 15:16 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
И все же как на счет chunked? http://code.google.com/p/android/issues/detail?id=3164 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 15:38 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
а картинки бьются, шо пипец: http://pixelbirthcloud.com/574_orig.jpg - тут не один блок из 70 байт. тут пол картинки убито :( ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 15:38 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
BlazkowiczИ все же как на счет chunked? http://code.google.com/p/android/issues/detail?id=3164 т.е. просто установить conn.setChunkedStreamingMode(размербуфера); и посмотреть что будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 15:42 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
BlazkowiczГугл подсказывает что кто-то в это время читал "10 причин не идти на Дэвида Айка" Всётаки это скорее почтовый спам а не HTTP трафик. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 17:08 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
BlazkowiczИ все же как на счет chunked? http://code.google.com/p/android/issues/detail?id=3164 в общем сделал я так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
уточнил у клиентов - на том конце wifi роутер стоит. т.е. это не 3g. попробовать что ли ftp аплоад... может он заработает? как вы считаете, есть еще какие-то варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 17:14 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
alex cкак вы считаете, есть еще какие-то варианты? Подключиться через WiFi и мониторить трафик. Посмотреть что именно едет с девайса и в каком виде приезжает на сервер. Действительно похоже на какую-то багу андроида, но ничего похожего в багрепорте не видно. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 17:23 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
alex cпопробовать что ли ftp аплоад... может он заработает? лучше сразу https. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 17:50 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
сейчас попробовал из дома по wifi. что самое интересное - все отлично работает.... залил порядка 100 мегов картинок.. и все отлично. вероятно все-таки данные портятся при плохом соединении. я, конечно, не спец, но ведь http - это протокол более высокого уровня. коррекция ошибок должна прекратно работать на уровне tcp и чисто теоретически по хттп вообще битые данные приходить не должны... если пакет был поврежден, он просто не пройдет и будет запрошен еще раз, а если совсем все плохо, то по таймауту сокет отвалится. это же не udp... как такое вообще может быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 20:38 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
в общем в конечном итоге поставил tcpdump на телефон.... смотрим дамп. дамп отличный, но есть один нюанс tcp checksum validation disabled... =) ну и собсно неудивительно, почему всякий хлам приходил на плохих каналах. другой вопрос, почему он выключен и как его включить... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2011, 14:22 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
а. пардон. не туда посмотрел.. это означало, что wireshark не проверяет их, оказывается .. ) не нашел как удалять или редактировать свои сообщения... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2011, 14:28 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
в общем так и не разобрался я, почему происходит такая фигня, но tcpdump на устройстве с андроидом дает неповрежденный файл, а те же самые данные, переданныые на сервер, приходят битые.. что еще осталось попробовать - так это сниффить трафик на удаленном сервере.. в общем все сраннее и сраннее... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2011, 14:40 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
alex cв общем так и не разобрался я, почему происходит такая фигня, но tcpdump на устройстве с андроидом дает неповрежденный файл, а те же самые данные, переданныые на сервер, приходят битые.. что еще осталось попробовать - так это сниффить трафик на удаленном сервере.. в общем все сраннее и сраннее... Вероятность того что данные портятся по дороге, какая-то уж очень маленкая. Так что направление работы верное. Надо проснифить трафик сервера, в момент ошибки, чтобы подтвердить или опровергнуть причастее к этому самого сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2011, 14:48 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
BlazkowiczВероятность того что данные портятся по дороге, какая-то уж очень маленкая. Так что направление работы верное. Надо проснифить трафик сервера, в момент ошибки, чтобы подтвердить или опровергнуть причастее к этому самого сервера. на сервере пока проснифить не удалось. но вот забавное наблюдение: уменьшил на андроиде mtu до 570 и из 30 картинок все целые... продолжаю пока аплоадить. посмотрим, может быть это никак и не связано, но раньше каждая 3-я была с ошибкой... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2011, 15:38 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
alex cна сервере пока проснифить не удалось. но вот забавное наблюдение: уменьшил на андроиде mtu до 570 и из 30 картинок все целые... продолжаю пока аплоадить. посмотрим, может быть это никак и не связано, но раньше каждая 3-я была с ошибкой... Чудеса, да и только. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2011, 15:41 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
50 файлов - все 50 без повреждений.. дело в корявой реализации IP стэка на андроиде? стоит, наверное, в android-groups написать. правда модерация там уж очень медленная :( ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2011, 15:46 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
для чистоты эксперимента перегрузил аппарат. отправляю картинки - 4-я по счету - битая ок. выставил chunk mode в 500 байт.. 0 эмоций. 300 байт - 0 эмоций.. выставляю mtu 576. убираю chunked mode... все путем. уже 82 картинки - полет нормальный.. при этом mtu меняется только на рутованном телефоне... и автоматом из явы, по-моему, этого сделать нельзя... походу mtu path discovery в андроиде криво реализовано или может быть у отдельных провайдеров icmp фильтруется... у меня только один вопрос - почему блин я? =) за что мне такие трудности?... =) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2011, 17:14 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
Может что-то у клиентов на WiFi подкрутить можно? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2011, 17:25 |
|
Битые картинки при аплоаде файлов по http из Android
|
|||
---|---|---|---|
#18+
BlazkowiczМожет что-то у клиентов на WiFi подкрутить можно? а что? если изначально пакет слишком большой по всем меркам (я так понимаю, что все, что выше 1500 - уже много), то он уже будет фрагментироваться.. и по идее эта фрагментация на уровне tcp должна быть невидима и безболезненна для клиента. ведь на пути от клиента до сервера может быть роутеры, максимальный размер пакета для которых еще меньше.. а значит это еще большая фрагментация... вообще, загадочна вся эта ситуация. и с точки зрения здравого смысла - это все полный бред. так не бывает ) попробую еще более старую версию андроида поставить и посмотреть что будет один плюс в этом - узнал много нового и вспомнил кучу старого.. =) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2011, 17:47 |
|
|
start [/forum/topic.php?all=1&fid=13&tid=1331842]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
others: | 274ms |
total: | 445ms |
0 / 0 |