我一直在尝试做很多试验和错误来解决这个问题,但似乎已经没有更多选择了。
场景:我有一个 AsyncTask,它使用 HttpClient 对托管在我的服务器上的 php 页面执行简单的 HTTP POST 事务。这已经过测试,当连接类型为 Wifi 时它工作得非常好。
问题:一旦我将数据连接转移到 EDGE,数据传输就不起作用。我收到以下错误。
java.net.SocketException: The operation timed out
这通常发生在低端设备上。我检查了数据连接是否存在,当我使用浏览器时它工作正常。这个问题似乎与我的应用程序无关,因为除了谷歌地图等浏览器之外的所有其他应用程序,谷歌地方也无法进行任何数据传输,并且抛出未找到主机的异常。
我试图增加超时时间,看看这是否是因为连接速度慢但没有缓解。
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 30000);
HttpConnectionParams.setSoTimeout(httpParameters, 30000);
HttpConnectionParams.setTcpNoDelay(httpParameters, true);
权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.VIBRATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>