Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么我的移动运营商在下载文件时会对其重新编码?_Android_Http_Download - Fatal编程技术网

Android 为什么我的移动运营商在下载文件时会对其重新编码?

Android 为什么我的移动运营商在下载文件时会对其重新编码?,android,http,download,Android,Http,Download,我在Android中发现了一个非常奇怪的现象。我发现,当通过3g下载图像时,随后计算的sha1与根据服务器上的文件应该得到的不同。经过进一步调查,我发现图像实际上是缩小了尺寸并重新编码的。看来我的移动运营商(verizon)正试图优化我下载的文件 我的问题是,是否有人能确认移动网络可能会在您的文件登录到您的设备之前对其进行优化?如果是这样的话,是否有一个设置,我可以禁用它 在我的应用程序中,非常重要的一点是要知道我下载的文件的大小与服务器所说的相同 这里有一个关于verizon优化3g传输的发现

我在Android中发现了一个非常奇怪的现象。我发现,当通过3g下载图像时,随后计算的sha1与根据服务器上的文件应该得到的不同。经过进一步调查,我发现图像实际上是缩小了尺寸并重新编码的。看来我的移动运营商(verizon)正试图优化我下载的文件

我的问题是,是否有人能确认移动网络可能会在您的文件登录到您的设备之前对其进行优化?如果是这样的话,是否有一个设置,我可以禁用它

在我的应用程序中,非常重要的一点是要知道我下载的文件的大小与服务器所说的相同


这里有一个关于verizon优化3g传输的发现。

您没有说,但我们假设这是一个HTTP连接

简而言之,他们这样做是为了节省带宽。3G不是免费的

如果您直接请求资源(GET),那么您将受处理HTTP响应的所有中介机构(即代理、网关)的支配,您可以确保它们可以在头中看到MIME类型,并相应地进行操作

您可以尝试在请求中使用HTTP
Accept
头,并使用
q
参数“提示”您想要最大的保真度

q
的范围为0到1。您可以使用一个较低的值(小于1)逃脱处罚。请阅读链接部分了解更多详细信息

您还可以检查传入的
内容类型
标题;它可能会揭示质量甚至MIME类型是否有“声明的”变化。它可能在告诉你它做了什么

如果“标准”为您服务,那就太好了

如果这不起作用,并且您已经控制了服务器端,请为其使用一种替代的基于文本的编码,如Base64,中介机构无法为您“压缩”。从那时起,SOAP就一直在这样做

如果确实需要绕过图像压缩,而
Accept
不起作用,则必须自己代理这些类型的请求,并在响应中使用非图像MIME类型对其重新编码


如果您使用自代理路由,您可能不需要调用图像
应用程序/octect流
,这是“未解释字节”的MIME类型。这将允许或多或少的数据传递,并希望中介机构“伸出援助之手”远离你们的东西

欢迎来到移动世界。。。您可能还会发现,优化图像的数据使用是基于原始的全尺寸文件而不是优化的文件收费的。他们说只有端口80的流量得到这种处理,所以只需为您的服务器设置一个新的侦听端口并在该端口上运行即可。8080,81等等…他们的网络,他们的规则恐怕。。。你能用72dpi制作你所有的图像吗?这样他们就不会被采样了?@Eamorr我可以试试这个。到目前为止,一个对我有效的解决方案是发出一个“https”请求,而不是一个“http”请求。如果方便的话,这是一个非常好的快速解决方案。我也在t-mobile上看到过这种行为。“接受”中的“q”参数是优先选择格式,而不是控制特定格式的压缩。
Accept: image/png;q=1