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在移动互联网上总是失败的。这就像问一个问题“为什么URLhttp://.../1
和http://.../3
工作,但http://.../2
失败?”。如果,如代码所示,所有三次下载都是使用相同的代码完成的,那么对于为什么第二次下载总是使用wifi,但无法使用移动互联网,人们怎么能给出明确的答案?我们甚至不知道第二个URL指的是什么。只是把它当作一种冗长且经过验证的表达“相同”的方式而已。)