2016-04-09 9 views
2

Zwecke Für das Debuggen, mein PHP-Server eine sehr einfache Zeichenfolge zu meinem Android-Client Echo:Android Empfangen von Antwort nicht von PHP Server

<?php echo "I REALLY LIKE PIE" ?> 

Mein Android-Client hat den folgenden Code, wie eine Zeichenfolge zu erhalten:

URL url = new URL("http://192.168.0.107/index.php"); 
     urlConnection = (HttpURLConnection) url.openConnection(); 


     urlConnection.setReadTimeout(10000); 
     urlConnection.setConnectTimeout(15000); 
     urlConnection.setRequestMethod("POST"); 
     urlConnection.setDoOutput(true); 
     urlConnection.setDoInput(true); 
     urlConnection.connect(); 

     int HTTPResult = urlConnection.getResponseCode(); 
     if (HTTPResult == HttpURLConnection.HTTP_OK) { 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); 
      String output = ""; 
      while ((output = bufferedReader.readLine()) != null) { 
       returnedString.append(output); 
      } 
      bufferedReader.close(); 

     } 

     urlConnection.disconnect(); 

Die Variable "output" ist jedoch null und daher ist die zurückgegebene Zeichenfolge ebenfalls null. Warum bekomme ich keine Antwort?

+0

http://192.168.0.107/index.php ist eine lokale IP und wahrscheinlich ist es nicht zugänglich mit Ihrem android-Gerät. –

+0

ist die Verbindung erfolgreich? Was ist der Wert von HTTPResult? –

+0

192.168.0.107 es Ihr Netzwerk ist IP-Adresse oder System-IP-Adresse, in der sich Ihr Projekt befindet? Wenn es Ihre System-IP-Adresse ist, wird es nicht direkt funktionieren. Wenn es die Netzwerk-IP-Adresse ist und Ihr Projekt auf dem Server eingerichtet ist, können Sie das Gerät mit dem Netzwerk verbinden (über WLAN). und freigegebene Projektressourcen können Sie darauf zugreifen. –

Antwort

2
  1. Fügen Sie die zum Debuggen angegebenen Protokolle hinzu oder verwenden Sie den Android-Debugger mit Haltepunkten.
  2. Vergewissern Sie sich, dass Sie die erforderlichen Änderungen in der php-Konfigurationsdatei vorgenommen haben, um sie über Ihr Telefon zugänglich zu machen. Es sollte funktionieren. Lassen Sie mich wissen, ob das Problem weiterhin besteht. (Ich habe mit diesen Code mit einigen geringfügigen Änderungen für das Parsen der JSON-Objekte danach aber da seine nur einen String in Ihrem Fall sollte es funktionieren.
  3. Für viel besser, einfacher und optimiert, Verwenden OkHttp oder Volley

    URL url = new URL("http://192.168.0.107/index.php"); 
    urlConnection = (HttpURLConnection) url.openConnection(); 
    BufferedReader reader = null; 
    
    urlConnection.setReadTimeout(10000); 
    urlConnection.setConnectTimeout(15000); 
    urlConnection.setRequestMethod("POST"); 
    urlConnection.setDoOutput(true); 
    urlConnection.setDoInput(true); 
    urlConnection.setRequestMethod("GET"); 
    urlConnection.connect(); 
    
    // Read the input stream into a String 
    InputStream inputStream = urlConnection.getInputStream(); 
    StringBuffer buffer = new StringBuffer(); 
    if (inputStream == null) { 
    
    // Nothing to do. 
    
    } 
    reader = new BufferedReader(new InputStreamReader(inputStream)); 
    
    String line; 
    while ((line = reader.readLine()) != null) { 
    // Since it's JSON, adding a newline isn't necessary (it won't affect  parsing) 
    // But it does make debugging a *lot* easier if you print out the completed 
    // buffer for debugging. 
    buffer.append(line + "\n"); 
    } 
    
    
    bufferedReader.close(); 
    
    } 
    
    urlConnection.disconnect(); 
    
+0

Was ändert sich in der Apache httpd.conf Datei sollte ich machen? Ich bin nicht in anderen Bibliotheken, und ich bevorzuge diese Aufgabe mit Bibliotheken, die von der 23. API gegeben werden. – darkterbears

+0

In der Datei httpd.conf sollte der Begriff Verweigern von allen auf Erlauben von allen gesetzt werden. Hat der obige Code funktioniert? Alle Protokolle erhalten Sie in der Konsole? – codeyourstack