2015-01-14 47 views
0

我们从Web API服务器下载三个文件:file.html,file.css和file.js。Android Java看似随机奇怪的网络/文件输出

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

我们的问题是,有时,在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][email protected]޹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文件一样。

值得注意的是,每个文件的扰码字符串总是相同的,这意味着该字符不是随机的,并且发生了其他事情。

它看起来像一个网络或编码问题,但我们已经在其他网络,其他设备和其他网络服务提供商复制它。这些文件通常通过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); 
    } 
+0

您是否尝试过使用wget/curl等其他方法复制此问题? – quinnjn

+0

我们已经了解到,这个问题是在一个干净的项目中解决的,这意味着我们有内存泄漏或类似的东西? – Mattis

+0

我不认为这是问题。你是否愿意将这些地址发布到这些文件? – quinnjn

回答

0

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

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

看来,他们中的任何一个或我们的实现都有内存泄漏。

感谢任何花时间在我们的问题上的人。