Android Java看似随机奇怪的乱码网络/文件输出

时间:2015-01-14 14:26:41

标签: java android file-io network-programming

我们正在从Web API服务器下载三个文件:file.html,file.css和file.js.

文件总是具有相同的名称,并且在下载新文件之前会删除旧文件。

我们的问题是,有时,在3到10次下载后,一个,两个或所有文件将返回加扰。

正如您在下面的代码中看到的,我们输出输入流的第一个字节。

例如, html 文件的第一行是:<!--DontRemoveThisLine-->

当它失败时,它会给我们一个以:

开头的字符串
????????????Zmo8.Iu1.s~*hJ~
e]}Do gy#c˺f=K-
          ]G3{4=yF;Qck,H [1~ھ4c!hJKŵ8o/N }+5eAvɸoQH/ȳdRE4ߝXRHS'q$s6n^d>&-$#[ԑn{    B&\0/L0R)\8K;\Ila?NԘǓ;25I)8*ܵ]*    r傋\8
          ,-!ۡ"y*v;qgQ?/5Abs/oK綇STK    ƣ4; +w44ٕS%֊_>5"rE-pm[!\?O]'rky2lC~&R{&Cb
          NoҵBԗte!}Y3l̩iTrYvSC4[A_q}#<ý$ndŪ9j[֛>:{2/s1if?k/R^Ă3σ

js 文件中的第一行是://DontRemoveThisLine

失败时:

????????????ܽywǵ|w
EܓXeN<%c; &1??%]U]=@r޹o=T׸kOr:5/v_??io?48{vy/,:jŢH.?{zљޯRc:ӽEM-"vOo7~7Fq?[|%Tsˆbw"~]9[o>n[w6ߝgoUFe9ݙ/`C{4|Jy]~$?ឦUUGxqe]טQ%\(~{pv"KS|5K_vnQhybZFvu1eʋ=9Utzw}_|qIPr1Sk*vܝ_MtqIp1+]{c

css 文件更多相同。

值得注意的是,每个文件的加扰字符串将始终相同,这意味着该字符不是随机的,并且还会发生其他事情。

它看起来像网络或编码问题,但我们已将其复制到其他网络,其他设备和其他Web服务提供商上。这些文件通常通过HTTPS提供,但我们已尝试从其他来源获取相同的结果。

我们还有一个iOS应用程序在同一台服务器上运行相同的操作,从不会出现任何问题。

有没有人知道为什么文件似乎随机乱码?

这是相关的代码摘录。

InputStream input = null;
OutputStream output = null;
HttpURLConnection connection = null;
try {
    URL url = new URL(sUrl[0]);
    connection = (HttpURLConnection) url.openConnection();
    connection.connect();

    if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
        return "Server returned HTTP " + connection.getResponseCode()
                + " " + connection.getResponseMessage();
    }

    // download the file
    input = connection.getInputStream();

    output = new FileOutputStream(getFilesDir().getAbsolutePath() + File.separator + sUrl[1]);

    byte data[] = new byte[4096];
    long total = 0;
    int count;
    int i = 0;
    while ((count = input.read(data)) != -1) {
        if (i == 0) {
            String str = new String(data);
            System.out.println("----- file " + sUrl[0] + " first line: " + str + "------");
        }
        i++;
        output.write(data, 0, count);
    }

1 个答案:

答案 0 :(得分:0)

我们终于通过隔离应用程序的不同部分找到了原因。

我们的问题是与毕加索图像下载库结合使用的gravatar-android库。它们被用在应用程序的不同部分。

似乎其中任何一个或我们的实现都有内存泄漏。

感谢任何花时间处理我们问题的人。