我有一个android
应用程序,用户可以按下“更新”按钮来更新。这在wifi上工作得很好。然而,在移动数据上,它存在一个问题。更新过程连接到我的REST服务器,实际上连接到3个不同数据的URL。在移动数据上,第一个和最后一个URL工作正常,但是第二个URL返回空白数据。就像我说的,在WIFI上,所有三个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/catch
中有捕获MalformedURLException
、IOException
、NullPointerException
的URL内容,并且没有抛出异常。洛格猫也什么都不告诉我。
发布于 2012-08-29 15:19:53
好的,过了一会儿,我自己回答了这个问题,但忘了回答。
问题在于,我是从线程中调用此方法的。线程正在继续工作,而其余的代码正在向前推进。当它向前移动的时候,第二个URL只是没有完成。
当我将调用移出线程并按顺序运行时,一切都很好!
我在想,我必须在一个线程中运行任何互联网检索的东西,但我认为这些调用已经在线程中,所以它是不必要的。
https://stackoverflow.com/questions/11172548
复制相似问题