我有下面的代码用于向服务器发送请求。如果使用主机名而不是IP地址,则会在Android应用程序中抛出UnknownHostException
String inputXML = createInputXML(searchText);
HttpClient httpclient = new DefaultHttpClient();
String url = "http://mysite.com/action";//Works fine if I use IP address directly,for eg:http://1.2.3.4/action
HttpPost httppost = new HttpPost(url);
HttpResponse response=null;
StringEntity se = null;
try {
se = new StringEntity(inputXML, HTTP.UTF_8);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
se.setContentType("text/xml");
httppost.setHeader("Content-Type","application/xml;charset=UTF-8");
httppost.setEntity(se);
try {
response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
当我在模拟器上运行该程序,我上线
response = httpclient.execute(httppost);
得到一个的UnknownHostException如果我使用的IP地址,而不是直接的主机名,请求被发送正确的。 请注意以下几点:
- 我使用的是Android 2.3.3
- 我已经在清单XML
- 代理服务器设置在仿真器的APN更新添加
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
。 - 在模拟器中使用浏览器,我可以用他们的主机名访问一个网站。
任何想法为什么这会导致问题?
您是否找到针对您的问题的解决方案?这真的可以帮助我。我有完全相同的问题(APN设置最新,android2.3.3,权限设置,浏览器工作) – 2012-02-16 00:32:23
不幸的是,没有... :( – user700284 2012-02-16 05:16:56
我现在找到了答案,可以从APN代理设置设备并使用它们不幸的是,我的项目在我办公室的另一台计算机上,但明天早上我会发布它,提醒我,如果我忘记了 – 2012-02-16 05:20:04