我正在制作一个从网页检索信息的 android 应用程序。简而言之,有代码:
protected Void doInBackground(String... params) {
HttpURLConnection conn = null;
try {
URL url;
url = new URL(getHomeUrl() + "myPage.php");
conn = (HttpURLConnection) url.openConnection();
if( conn.getResponseCode() == HttpURLConnection.HTTP_OK ){
doThings(conn);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(conn != null) {
conn.disconnect();
}
}
return null;
}
如果 url 是http://www.mywebsite.com/myPage.php,则连接正常。但是,如果 url 是http://localhost/myPage.php或http://127.0.0.1:80/myPage.php并打开了easyphp devserver,我会捕获一个 IOException 并得到这个:
- 在 android 模拟器上 => java.net.ConnectException:连接被拒绝
- 在物理设备上(作为部署目标)=> java.net.ConnectException:无法连接到 /127.0.0.1(端口 80):连接失败:ECONNREFUSED(连接被拒绝)
有关信息,当我在浏览器中复制粘贴http://127.0.0.1:80/myPage.php时,授予访问权限。
我读到 android 模拟器可以“使用” localhost,建议使用 10.0.2.2 代替,但它也不起作用。我想这是 apache conf 的问题,但我有这个,这对我来说似乎是正确的:
<Directory "D:/Utilitaires/EasyPHP-Devserver-17/eds-www">
Options FollowSymLinks Indexes ExecCGI
AllowOverride All
Order deny,allow
Allow from 127.0.0.1
Deny from all
Require all granted
</Directory>
任何想法 ?