12

我有一个php名为test.php存储在我的Openshift服务器(http://phpgear-shifz.rhcloud.com/v1/test.php)中的文件,代码如下。

<?php
echo "Hello";

任务

我正在尝试从 Android 应用程序下载文本。

问题

我正在java.net.UnknownHostException: Unable to resolve host "phpgear-shifz.rhcloud.com": No address associated with hostname通过WiFi网络连接一段时间,但一切都很好Mobile Data

安卓活动代码

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

        final TextView tvTest  = (TextView) findViewById(R.id.tvTest);

        new AsyncTask<Void, Void, String>() {
            @Override
            protected String doInBackground(Void... params) {

                try {
                    final URL url = new URL("http://phpgear-shifz.rhcloud.com/v1/test.php");
                    final BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
                    final StringBuilder sb = new StringBuilder();
                    String line;
                    while((line = br.readLine())!=null){
                        sb.append(line).append("\n");
                    }

                    br.close();
                    return sb.toString();

                } catch (IOException e) {
                    e.printStackTrace();
                    return "Error: "  + e.getMessage();
                }
            }

            @Override
            protected void onPostExecute(String result) {
                tvTest.setText(result);
            }
        }.execute();

    }

回应

在 WiFi 上

无线上网

关于移动数据

onMobileData

问题

1)为什么我无法通过完全正常的WiFi network地方连接?Mobile Data

2)如何解决这个问题?

注意:有时它会连接,有时不会。

4

2 回答 2

5

您的 DNS 不知道所请求站点的 IP 地址。

您遇到了问题,因为您的 Wifi 连接的 DNS 无法将主机名转换为 IP 地址。并且您的数据载体正在使用不同的 DNS,该 DNS 具有与主机名相关联的 IP 地址。

尝试更改 Wifi 路由器上的 DNS 服务器地址或使用网站的直接 IP 地址(如果有)。

以下是一些 google DNS 服务器地址

  • 8.8.8.8
  • 8.8.4.4
于 2015-09-27T09:23:03.227 回答
4

您可能有 IPv4 与 IPv6 的问题。许多移动数据计划使用 IPv6,而目前大多数 WiFi 安装使用 IPv4,因此您可能切换的不仅仅是网络层;您实际上可能正在切换第 3 层协议。

phpgear-shifz.rhcloud.com 的 DNS 条目(仅)指向 IPv4 地址,因此它应该可以在 WiFi 上运行。但也许您的移动设备使用 IPv6 DNS 服务器并且无法通过 IPv4 解析名称?

另一种可能性:您的移动设备在 IPv4 堆栈中可能存在更普遍的问题。您的移动数据可能正在使用 6 到 4 转换技术之一,从而绕过您的本地 IPv4 问题。

我注意到 DNS 名称 phpgear-shifz.rhcloud.com 的另一个问题,尽管我怀疑它是否相关。

该 DNS 条目实际上是指向另一个 CNAME 条目的 CNAME 条目,而后者又指向 Amazon 上的 A 记录。CNAME 的双重间接寻址违反了 DNS RFC,尽管大多数解析器无论如何都应该处理它。此外,如果这是问题所在,它应该同样影响 WiFi 和移动数据。

于 2015-10-06T04:54:00.273 回答