我正在解析xml文件 其中一种方法如下:
public static String getXML(){
String line = null;
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://p-xr.com/xml/");
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
line = EntityUtils.toString(httpEntity);
} catch (UnsupportedEncodingException e) {
line = "<results status=\"error\"><msg>Can't connect to server</msg></results>";
} catch (MalformedURLException e) {
line = "<results status=\"error\"><msg>Can't connect to server</msg></results>";
} catch (IOException e) {
line = "<results status=\"error\"><msg>Can't connect to server</msg></results>";
}
return line;
}
在这里,我想替换
HttpPost httpPost = new HttpPost("http://p-xr.com/xml/");
通过
HttpPost httpPost = new HttpPost("http://127.0.0.1/myfile.xml");
我可以在浏览器中浏览http://127.0.0.1/myfile.xml
。
但是当我将这个地址写入上面的代码时,它就会起作用。
为什么?
我的项目需要http方法来访问xml文件。
答案 0 :(得分:2)
在模拟器中,localhost是模拟器本身而不是运行模拟器的系统。所以它不会起作用。
改用10.0.2.2。
答案 1 :(得分:1)
在这种情况下使用10.0.2.2,请查看Emulator Networking。
答案 2 :(得分:1)
在模拟器中,有一些特殊定义的地址别名用于访问模拟器本身之外的网络。
要在运行模拟器的系统(即主机系统)上访问localhost,请使用10.0.2.2
参考此处:
http://developer.android.com/guide/developing/devices/emulator.html#emulatornetworking
答案 3 :(得分:1)
如果您想使用Android设备执行此操作:
您可以在Mac或Linux上使用ifconfig
或在Windows上使用ipconfig
来查找计算机的IP地址。
然后你可以用那个IP地址替换p-xr.com / 127.0.0.1。
您需要确保没有在计算机上设置防火墙,如果是这样,您必须允许访问Android设备才能联系本地HTTP服务器。