2015-09-27 4 views
11

Ich habe eine php Datei namens test.php in meinem Openshift Server (http://phpgear-shifz.rhcloud.com/v1/test.php) mit dem folgenden Code gespeichert.Kann nicht über WiFi verbinden, aber möglich durch mobile Daten

<?php 
echo "Hello"; 

Aufgabe

Ich versuche, den Text aus einer Android-Anwendung zum Download bereit.

Problem

Ich bin ein java.net.UnknownHostException: Unable to resolve host "phpgear-shifz.rhcloud.com": No address associated with hostname bekommen, während sie durch ein WiFi Netzwerk verbinden, aber alles ist mit Mobile Data in Ordnung.

Android Aktivität Code

@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(); 

    } 

ANTWORTEN

auf WiFi

onWiFi

auf Mobil Da ta

onMobileData

Frage

1) Warum kann ich nicht durch die WiFi network verbinden, wo Mobile Data völlig in Ordnung ist?

2) Wie löst man dieses Problem?

HINWEIS: Irgendwann es immer verbunden, wird irgendwann nicht.

+1

Haben Sie sichergestellt, dass der WLAN-Router mit dem Internet verbunden ist? Können Sie auf die URL http://phpgear-shifz.rhcloud.com/v1/test.php von einem Gerät/Computer aus zugreifen, das mit demselben WLAN verbunden ist? – gipsy

+0

Ja bin ziemlich sicher über die Internetverbindung und die URL ist vom Gerät aus zugänglich. – theapache64

+0

Ich glaube, Sie haben noch die Android Manifest-Berechtigung für _ACCESS_NETWORK_STATE_ '' – pRaNaY

Antwort

5

Ihr DNS kennt die IP-Adresse der angeforderten Site nicht.

Sie haben Probleme, weil der DNS Ihrer WLAN-Verbindung einen Hostnamen nicht in eine IP-Adresse konvertieren kann. Und Ihr Datenträger verwendet ein anderes DNS, dessen IP-Adresse dem Hostnamen zugeordnet ist.

Versuchen Sie, Ihre DNS-Serveradresse auf Ihrem WLAN-Router zu ändern oder verwenden Sie die direkte IP-Adresse der Website, falls verfügbar.

Hier sind einige Google-DNS-Server

  • 8.8.8.8
  • 8.8.4.4
+0

Ich kann nicht von jedem 'WiFi' Verbindung verbinden. Ich denke, dass Leute, die meine 'App' verwenden, ihre' WiFi'-Konfiguration für eine bestimmte Anwendung nicht ändern werden. Was kann ich jetzt machen ? – theapache64

+0

Ich bin auf Wifi und ich kann Hallo Nachricht sehen. – Lucas03

+0

@Shifar Überprüfen Sie bitte Ihre Router-DNS-Einstellungen und es sollte funktionieren. Ich kann es mit dem WLAN – Ritesh

4

Adressen Sie eine IPv4-IPv6 vs Problem haben kann. Viele mobile Datenpläne verwenden IPv6, während die meisten WiFi-Installationen derzeit IPv4 verwenden. Sie können also mehr als nur die Netzwerkebene wechseln. Sie können tatsächlich Layer-3-Protokolle wechseln.

Der DNS-Eintrag für phpgear-shifz.rhcloud.com verweist auf eine IPv4-Adresse (nur), so dass es sollte auf WiFi Arbeit. Aber vielleicht verwendet Ihr Mobilgerät einen IPv6-DNS-Server und kann den Namen nicht über IPv4 auflösen?

Eine andere Möglichkeit: Ihr Mobilgerät hat möglicherweise ein allgemeineres Problem im IPv4-Stack. Ihre mobilen Daten verwenden möglicherweise eine der 6-zu-4-Übergangstechnologien und umgehen somit Ihr lokales IPv4-Problem.

Ich bemerkte ein anderes Problem mit dem DNS-Namen phpgear-shifz.rhcloud.com, obwohl ich bezweifle, dass es verwandt ist.

Dieser DNS-Eintrag ist eigentlich ein CNAME-Eintrag, der auf einen anderen CNAME-Eintrag verweist, der wiederum auf einen A-Datensatz auf Amazon verweist. Double-Directions von CNAMEs sind eine Verletzung der DNS-RFCs, obwohl die meisten Resolver es trotzdem behandeln sollten. Wenn dies das Problem war, sollte dies sowohl WiFi als auch mobile Daten gleichermaßen betreffen.