无法通过WiFi连接,但可以通过移动数据连接

时间:2015-09-27 07:14:01

标签: java php android openshift openshift-php-cartidges

我在php服务器(http://phpgear-shifz.rhcloud.com/v1/test.php)中存储了名为test.php的{​​{1}}文件,代码如下。

Openshift

任务

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

问题

我在通过<?php echo "Hello"; 网络连接时收到java.net.UnknownHostException: Unable to resolve host "phpgear-shifz.rhcloud.com": No address associated with hostname,但WiFi一切正常。

Android活动代码

Mobile Data

应答

WiFi上的

onWiFi

移动数据

onMobileData

问题

1)为什么我无法通过 @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 network完全没问题?

2)如何解决这个问题?

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

2 个答案:

答案 0 :(得分:5)

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

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

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

以下是一些谷歌DNS服务器地址

  • 8.8.8.8
  • 8.8.4.4

答案 1 :(得分: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条目,该条目又指向亚马逊上的A记录。 CNAME的双重间接违反了DNS RFC,但大多数解析器无论如何都应该处理它。此外,如果这是问题,它应该同等地影响WiFi和移动数据。