为什么我的应用程序无法使用easyphp devserver连接到localhost?

时间:2019-11-16 17:35:27

标签: android localhost emulation easyphp connectexception

我正在制作一个可从网页检索信息的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,则连接正常。 但是,如果使用easyphp devserver的网址是http://localhost/myPage.phphttp://127.0.0.1:80/myPage.php,我会捕获到IOException并得到这个信息:

  • 在android模拟器上=> java.net.ConnectException:连接被拒绝
  • 在物理设备上(作为部署目标)=> java.net.ConnectException:无法连接到/127.0.0.1(端口80):连接失败:ECONNREFUSED(连接被拒绝)

有关信息,当我在浏览器中复制粘贴http://127.0.0.1:80/myPage.php时,将授予访问权限。

我读到android模拟器可以“使用”本地主机,建议改为使用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>

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您的服务器正在计算机上运行,​​因此127.0.0.1仅在该计算机上工作。如果您想通过手机访问它,则应写出计算机的本地地址(即:192.168.10.100)。如果您的网络配置正确,它将可以正常工作。

我建议您将您的网站上传到公共主机,您可以从移动应用程序轻松访问它。

答案 1 :(得分:0)

知道了! http://10.0.2.2失败了,但是http://10.0.2.2:80没关系!