Почему мой оператор мобильной связи перекодирует файл при загрузке? - PullRequest
4 голосов
/ 19 октября 2011

Я обнаружил очень странное явление в Android.Я обнаружил, что при загрузке изображения более 3g вычисляемый впоследствии sha1 отличается от того, что должно было происходить в файле, находящемся на сервере.После дальнейшего расследования я обнаружил, что изображение было на самом деле уменьшено в размере и перекодировано.Может показаться, что мой оператор мобильной связи (verizon) пытается оптимизировать загружаемые файлы.

Мой вопрос: может ли кто-нибудь еще подтвердить, что мобильные сети могут оптимизировать ваш файл до того, как он попадет на ваше устройство?И если так, есть ли где-то какая-то настройка, чтобы я мог отключить это.

В моем приложении очень важно знать, что sha1 файла того, что я скачал, соответствует тому, что, по словам сервера, должно быть.

Вот статья , найденная о verizon, оптимизирующей переводы 3g.

1 Ответ

0 голосов
/ 20 октября 2011

Вы не сказали, но давайте предположим, что это HTTP-соединение.

Короче говоря, они делают это для экономии пропускной способности.3G не бесплатен!

Если вы напрямую запрашиваете ресурсы (GET), то вы находитесь во власти всех посредников, которые обрабатывают ответ HTTP (т.е. прокси, шлюзы), и вы можете быть уверены, что они могутпосмотрите MIME-тип в заголовках и ведите себя соответственно.

Вы можете попробовать использовать заголовок HTTP Accept в своем запросе и использовать параметр q, чтобы "намекнуть", что вы хотите максимальной точности.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

Accept: image/png;q=1

q варьируется от 0 до 1. Возможно, вам удастся уйти с меньшим значением (чем 1).Пожалуйста, прочитайте связанный раздел для более подробной информации.

Вы также можете проверить входящий заголовок Content-Type;это может показать, есть ли "объявленное" изменение в качестве или даже тип MIME.Возможно, он говорит вам, что он сделал!

Было бы замечательно, если бы «стандарт» выполнил за вас свою работу!

Если это не сработало, и вы контролируетена стороне сервера, используйте для него альтернативную текстовую кодировку, например Base64, которую посредники не могут «сжать» для вас.SOAP делает это с тех пор!

Если вам действительно нужно обойти сжатие изображений, а Accept не работает, вы должны прокси-запросы такого рода самостоятельно и перекодировать их с не-image MIME-тип в ответе.

Если вы идете по маршруту само-прокси, вы, вероятно, можете избежать вызова ваших изображений application/octect-stream, который является типом MIME для "неинтерпретируемых байтов".Это позволило бы более-менее передавать данные и, как мы надеемся, не позволяло посредникам «помогать» от ваших вещей!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...