0

我有一个android用户可以通过按下“更新”按钮来更新的应用程序。这在wifi上完美运行。但是,在移动数据上,它有一个问题。UPDATE 过程连接到我的 REST 服务器,实际上连接到 3 个不同数据的 URL。在移动数据上,第一个和最后一个 URL 工作正常,但第二个返回空白数据。就像我说的,在 WIFI 上,所有 3 个 URL 都可以正常工作,但在 3G 上,它们却不行。总是只有第二个 URL 会导致问题。

这是我的代码。这是非常标准的:

//FIRST
URL url = new URL(Constants.firstURL); 
String line = null; 
InputStream is = (InputStream) url.getContent(); 
StringBuilder sb = new StringBuilder(); 
BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
while((line = reader.readLine()) != null)
{ 
    sb.append(line); 
} 
firstRawData = sb.toString().replace(" ", "").replace("\n", ""); 
is.close(); 

//SECOND
url = new URL(Constants.secondURL); 
line = null; 
is = (InputStream) url.getContent(); 
sb = new StringBuilder(); 
reader = new BufferedReader(new InputStreamReader(is)); 
while((line = reader.readLine()) != null)
{ 
    sb.append(line); 
} 
secondRawData = sb.toString().replace(" ", "").replace("\n", ""); 
is.close();

//THIRD
url = new URL(Constants.thirdURL); 
line = null; 
is = (InputStream) url.getContent(); 
sb = new StringBuilder(); 
reader = new BufferedReader(new InputStreamReader(is)); 
while((line = reader.readLine()) != null)
{ 
    sb.append(line); 
} 
thirdRawData = sb.toString().replace(" ", "").replace("\n", ""); 
is.close();

我将不胜感激任何帮助,因为我以前从未遇到过这个问题。

谢谢你。

编辑:我可以看到的任何地方都没有错误,并且我在try/catchwhich catch MalformedURLException,中有 URL 内容IOExceptionNullPointerException并且没有抛出异常。Logcat 也没有告诉我任何事情。

4

1 回答 1

0

好的,所以我过了一会儿自己回答了这个问题,但忘了回复。

问题是我是从一个线程中调用这个方法的。线程开始工作,而其余代码正在向前推进。当它向前移动时,第二个 URL 还没有完成。

当我将调用移到线程外并使其按顺序运行时,一切都很好!

我在想我必须在一个线程中运行任何互联网检索的东西,但我认为这些调用已经在线程中,所以不需要它。

于 2012-08-29T15:19:53.137 回答