我试过多个HTTP类(HttpURLConnection,HTTPClient和其他人),但他们没有在模拟器上工作.然后我决定在我的手机上进行测试,效果很好!
那么如何修复Android模拟器的这种奇怪的行为,即HTTP类不起作用(浏览器可以工作)?他们崩溃了一个应用程序.
这是我的代码:
public static SimpleXML getResponse(String action, Map<String, String> params) {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(action);
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(params.size());
for(Map.Entry<String, String> heh : params.entrySet())
nameValuePairs.add(new BasicNameValuePair(heh.getKey(), heh.getValue()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
return SimpleXML.loadXml(response.getEntity().getContent());
} catch (ClientProtocolException e) {
return null;
} catch (IOException e) {
return null; …Run Code Online (Sandbox Code Playgroud) 我有安卓代码,它使用后台进程定期(例如每小时)连接到Web上的内容源以检查更新的内容.当新用户第一次下载应用程序并运行它时,似乎(这只是一个"目前似乎")在这种首次运行的情况下,因为我们服务器的DNS尚未在设备上缓存,那些第一系列连接因可怕的UnknownHostException而失败:Host未解析.当然,应用程序稍后再次尝试(再次,"看起来像")它一切正常 - 可能是因为操作系统有时间实际解决地址.
所以,我的问题是:(1)其他Android开发人员是否也看到了他们部署的应用程序的这种行为?第一次,一系列"主持人未解决"的问题在以后发挥作用.(2)有没有人有更好的策略来"加热DNS"这么说,以便第一个真正的连接起作用?或者,当您遇到此异常时,您是否只是重新尝试使用一些后退循环?我正在考虑有一个单独的线程试图从我们的服务器获取一个小文本文件,让它只是循环,直到它得到它,并可能(不确定这部分)阻止其他传出网络连接,直到它成功.
无论如何,我已经在Stack Overflow上阅读了各种类似措辞问题的答案,我只是向大家保证
<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)
在我的清单文件中设置:)