Невозможно подключиться через WiFi, но возможно через мобильные данные
У меня есть 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
все в порядке.
Код активности Android
@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
![onWiFi]()
на мобильных данных
![onMobileData]()
Вопрос
1) Почему я не могу подключиться через WiFi network
где с Mobile Data
все в порядке?
2) Как решить эту проблему?
ПРИМЕЧАНИЕ: когда-нибудь он подключается, иногда нет.
Ответы
Ответ 1
Ваш DNS не знает IP-адрес запрошенного сайта.
У вас возникли проблемы, потому что DNS вашего Wi-Fi-соединения не может преобразовать имя хоста в IP-адрес. И ваш носитель данных использует другой DNS, который имеет IP-адрес, связанный с именем хоста.
Попробуйте изменить адрес своего DNS-сервера на маршрутизаторе Wifi или использовать прямой IP-адрес веб-сайта, если он доступен.
Вот некоторые адреса DNS-серверов Google
Ответ 2
У вас может быть проблема с IPv4 и IPv6. Многие мобильные планы данных используют IPv6, в то время как большинство установок WiFi в настоящее время используют IPv4, поэтому вы можете переключать не только сетевой уровень; вы действительно можете переключать протоколы уровня 3.
Запись DNS для phpgear-shifz.rhcloud.com указывает на IPv4-адрес (только), поэтому он должен работать на WiFi. Но, может быть, ваше мобильное устройство использует DNS-сервер IPv6 и не может разрешить имя через IPv4?
Другая возможность: ваше мобильное устройство может иметь более общую проблему в стеке IPv4. Ваши мобильные данные могут использовать одну из технологий перехода от 6 до 4 и, таким образом, обходить вашу локальную проблему IPv4.
Я заметил еще одну проблему с DNS-именем phpgear-shifz.rhcloud.com, хотя я сомневаюсь, что это связано.
Эта запись DNS - это запись CNAME, которая указывает на другую запись CNAME, которая, в свою очередь, указывает на запись A на Amazon. Двойные направления CNAME являются нарушением DNS RFC, хотя большинство resolver должно обрабатывать его в любом случае. Кроме того, если это была проблема, она должна влиять как на данные WiFi, так и на мобильные данные.