0

我正在制作一个从网页检索信息的 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.phphttp://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>

任何想法 ?

4

2 回答 2

0

知道了 !http://10.0.2.2失败了,但是http://10.0.2.2:80没问题!

于 2019-11-16T21:52:28.897 回答
0

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

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

于 2019-11-16T17:45:16.087 回答