Java Android-不使用移动数据/3G下载数据

Java Android-不使用移动数据/3G下载数据,java,android,http,Java,Android,Http,我有一个android应用程序,用户可以通过按下“更新”按钮进行更新。这在wifi上非常有效。但是,在移动数据上,它有一个问题。更新过程连接到我的REST服务器,并实际连接到不同数据的3个URL。在移动数据上,第一个和最后一个URL工作正常,但第二个URL返回空白数据。正如我所说,在WIFI上,所有3个URL都能完美工作,但在3G上,它们却不能。总是只有第二个URL会引起问题 这是我的密码。这是相当标准的: //FIRST URL url = new URL(Constants.firstURL

我有一个
android
应用程序,用户可以通过按下“更新”按钮进行更新。这在wifi上非常有效。但是,在移动数据上,它有一个问题。更新过程连接到我的REST服务器,并实际连接到不同数据的3个URL。在移动数据上,第一个和最后一个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/catch
中有URL内容,它捕获
MalformedURLException
IOException
NullPointerException
,并且没有引发异常。Logcat也没有告诉我任何事情。

好的,所以我自己回答了一会儿,但忘了回答

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

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


我想我必须在一个线程中运行任何internet检索内容,但我认为这些调用已经在线程中,因此不需要了。

可能是因为移动数据非常慢,url 2在速度、超时或其他方面存在一些限制?您是否在日志(客户端/服务器)中看到错误或警告?请参阅编辑。不幸的是,任何地方都没有错误或警告。我只是使用
Log.I()
来输出原始数据,它将第二个数据显示为空白。谢谢。我会使用像Charles这样的webdebugger来查看请求和响应。如果可能的话,还可以查看服务器的日志。@Ixx:我的观点是,我们不知道URL是什么,但我们被告知第二个URL在移动互联网上总是失败的。这就像问一个问题“为什么URL
http://.../1
http://.../3
工作,但
http://.../2
失败?”。如果,如代码所示,所有三次下载都是使用相同的代码完成的,那么对于为什么第二次下载总是使用wifi,但无法使用移动互联网,人们怎么能给出明确的答案?我们甚至不知道第二个URL指的是什么。只是把它当作一种冗长且经过验证的表达“相同”的方式而已。)