【发布时间】:2019-11-16 17:35:27
【问题描述】:
我正在制作一个从网页检索信息的安卓应用。 简而言之,就是代码:
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>
有什么想法吗?
【问题讨论】:
-
你确定你启动了apache服务器吗?
-
For information, when I copy paste http://127.0.0.1:80/myPage.php in my browser,是的...在您电脑的浏览器中。但是您应该在 Android 设备或模拟器的浏览器中执行此操作。那不会过去的。 -
Allow from 127.0.0.1 Deny from all错误。那将是来自同一台电脑的连接。更好:Allow from all Deny from nobody -
10.0.2.2 可以使用模拟器。或服务器计算机的本地 IP 地址。
标签: android localhost emulation easyphp connectexception