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

问题描述 投票:0回答:2

我正在制作一个可从网页检索信息的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上使用url是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>

任何想法?

android localhost emulation easyphp connectexception
2个回答
0
投票

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.