在我的 android 应用程序中,我必须向服务器发送请求以接收其响应。该应用程序运行良好,当我进行一些测试时发现以下问题。
认为 WIFI 已关闭且移动(3G)连接可用。因此,如果我在按下按钮将请求发送到服务器后打开 WIFI,应用程序将从以下代码行停止执行resCode = httpConn.getResponseCode();
。此代码在单独的线程中运行并使用 Handler 类。
我认为发生这种情况是因为当我按下按钮(发送请求)时,它只有移动(3G)互联网并试图处理(移动互联网)。但是当我在处理时打开WIFI时,可能会尝试使用WIFI进行处理,因为WIFI具有最高优先级并产生冲突。
有没有人知道如何防止这种冲突。
编辑。..................................................... ......
InputStream in = null;
int resCode = -1;
try
{
URL url = new URL(urlStr.replace(" ", "%20"));
URLConnection urlConn = url.openConnection();
HttpURLConnection httpConn = (HttpURLConnection)urlConn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
httpConn.setConnectTimeout(5500); Log.v("State", "before get response code");
/*->>*/ resCode = httpConn.getResponseCode(); Log.v("State", "After get response code");
in = (resCode == HttpURLConnection.HTTP_OK) ? httpConn.getInputStream() : in;
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
在这种情况下它成功执行的最后一行是httpConn.setConnectTimeout(5500);
and stop 从那里执行....
它运行"before get response code"
但不在"before get response code"
Logcat 中......
即使它没有任何例外......我检查了......