gpt4 book ai didi

java - 连接 3G 与 Wi-Fi 连接

转载 作者:行者123 更新时间:2023-12-01 04:47:16 29 4
gpt4 key购买 nike

我正在开发一个使用 xml web 服务的 android 应用程序。在 wi-fi 网络中连接时工作正常,但在 3G 网络中连接时失败(未找到 http 404)。

这不仅仅发生在设备中。为了进行测试,我在桌面上创建了一个 main 方法,然后出现了问题。当我在 Wifi 网络中连接正常而在 3G 网络中连接失败时。

当使用 3g 或 wifi 时,我看到 HttpRequest header 和他的具有相同的信息。

可以是什么?帮助我!!

HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 10000);
HttpConnectionParams.setSoTimeout(httpParams, 10000);

System.setProperty("http.keepAlive", "false");
HttpClient client = new DefaultHttpClient(httpParams);
HttpGet get = new HttpGet(url);

get.addHeader("Referer", "http://rast.sample.com/sample");
get.addHeader("User-Agent","Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22");
get.addHeader("Content-Type","application/x-www-form-urlencoded");
get.addHeader("X-Requested-With","XMLHttpRequest11");
get.addHeader("Accept","application/xml, text/xml, */*");
get.addHeader("Cache-Control","no-cache"); // HTTP/1.1
get.addHeader("Expires", "Sat, 26 Jul 1997 05:00:00 GMT");
get.addHeader("Connection","close");

HttpResponse resp = client.execute(get);
HttpEntity entityResp = resp.getEntity();

我认为问题可能出在 3G 缓存上,我该如何清理?

编辑:我意识到 3G 有时有效,有时无效。

我做了以下测试:有两台 3G 设备,一台可以使用,另一台不能使用。我启用该设备作为不工作的设备的接入点(共享工作设备的 3G 网络),然后其他设备也可以工作。

编辑2:我意识到,在连接到 3G 网络的情况下浏览该网站是可行的。它可能是什么?

最佳答案

可能是由于连接尚未建立而出现问题...

尝试按照此处的建议等待连接:https://stackoverflow.com/a/8679706/944070

也适用于 3G

编辑:

在您的额外代码之后,我还建议将超时更改为 100004500060000 3G总是比wifi慢!

编辑 2: 详细阐述 wait until wifi connected on android链接。

更改您的代码,例如:

Thread t = new Thread() {
@Override
public void run() {
try {
//check if connected!
int count = 0;
while (!isConnected(YourActivityName.this)) {
count++;
//Wait to connect
Thread.sleep(1000);
// log to help you understand what is going on...
Log.w("debug", "no connection try "+ count); // ... do not forget to remove it!
// DO NOT TRY FOR EVER!!!
if(count > Number_of_allowed_times) {
break;
}
}
if(isConnected(YourActivityName.this)) {
Log.w("debug", "network connection OK! ");
// here you can do your stuff
} else {
Log.w("debug", "no connection tried " + count +" times");
}

} catch (Exception e) {
}
}
};
t.start();

isConnected就像链接中的一样:

public static boolean isConnected(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = null;
if (connectivityManager != null) {
networkInfo = connectivityManager.getActiveNetworkInfo();
}

return networkInfo == null ? false : networkInfo.getState() == NetworkInfo.State.CONNECTED;
}

您可以使用BroadcastReceiver代替线程和等待对于 android.net.conn.CONNECTIVITY_CHANGE当连接建立时,会收到刷新/下载内容的通知。

关于java - 连接 3G 与 Wi-Fi 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15626243/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com