2016-03-25 10 views
3

Ich erstelle die Anwendung zum Senden eines Textes an den Server und überprüfen if(text != null) geben Sie neue Textwerte zurück.Wie erhält man eine Zeichenfolge vom PHP-Server an Android?

Mein Code dieses wie zu tun:

In PHP Server:

$text = $_POST["text1"]; 
if($text != null){ 
    echo "Contact1-----".$text."-----10h49 25/03/2016 at New York city"; 
} else{ 
    echo ""; 
}      

Bevor ich eine Datei auf dem Server zu speichern und alle Daten in diese Datei schreiben. Zu diesem Zeitpunkt möchte ich es zurück zu Android-Daten, müssen nicht in Datei speichern. Und im Android-Code ist:

final String scripturlstring = "http://www.anyexample.com/main.php"; 

AddContactActivity contact; 
public void sendToServer(final String text){ 
    contact = new AddContactActivity(); 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      try { 

       String textparam = "text1=" + URLEncoder.encode(text, "UTF-8"); 

       URL scripturl = new URL(scripturlstring); 
       HttpURLConnection connection = (HttpURLConnection) scripturl.openConnection(); 
       connection.setDoOutput(true); 
       connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
       connection.setFixedLengthStreamingMode(textparam.getBytes().length); 
       contentWriter.write(textparam); 
       contentWriter.flush(); 
       contentWriter.close(); 

       InputStream answerInputStream = connection.getInputStream(); 
       final String answer = getTextFromInputStream(answerInputStream); 

       if(answer!="") { 
        String[] contactInfo = answer.split("-----"); 

        contact.insertContact(contactInfo[0], contactInfo[1], contactInfo[2], "", ""); 
       } 
       answerInputStream.close(); 
       connection.disconnect(); 


      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    }).start(); 

} 



public String getTextFromInputStream(InputStream is) { 
    BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
    StringBuilder stringBuilder = new StringBuilder(); 

    String currentLine; 
    try { 
     while ((currentLine = reader.readLine()) != null) { 
      stringBuilder.append(currentLine); 
      stringBuilder.append("\n"); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return stringBuilder.toString().trim(); 
} 

Ich weiß nicht, warum answernull ist.

ich denke, es muss die Daten zurückgeben wie:

Contact1 $text 10h49 25/03/2016 at New York city

+0

was, wenn Sie im Browser öffnen anyexample.com/main.php?text1=asd passiert? – Eduard7

+0

@ Eduard7 Es zeigt nichts. Denkst du, tritt in PHP-Datei? – vanloc

+0

versuche, $ _POST ["text1"] zu $ ​​_GET ["text1"] zu ändern – Eduard7

Antwort

1

Lassen Sie das Android Teil und Debuggen von PHP-Code zuerst. Sie veröffentlichen die Daten nicht, so ist dies definitiv falsch:

$text = $_POST["text1"]; 

Verwenden $ _GET [ "text1"] statt:

$text = $_GET["text1"]; 

Sie _REQUEST obwohl $ verwenden können, aber IMO ist es eine schlechte Übung, da es die Variablen $ _GET, $ _POST und $ _COOKIE zusammenführt.

+0

Dank @ Eduard7, ich benutze die Klasse 'sendToServer (final String text)' posten eine Zeile und möchte eine neue Zeichenfolge von PHP-Server durch 'Echo' neue String-Werte erhalten. Nachdem eine neue Zeile empfangen wurde, wird meine Anwendung einen anderen Prozess fortsetzen. – vanloc

1

ersetzen

$text = $_POST["text1"]; mit

$text = $_REQUEST['text1']; 
+0

Danke @Dhavalkumar Solanki: Ich habe deine Veränderung versucht. Im Android-Client erhalte ich keine Werte vom Server PHP. Ich denke, ein Problem in 'getTextFromInputStream' Klasse, weil vor dieser Klasse Werte in einer Datei erhalten. Current, ich bekomme Werte direkt von 'echo' im PHP-Server. – vanloc

+0

Hallo ioewi einige Zeit Protokoll sollte nicht für Http Methode funktionieren, wenn Sie in der Lage zu debuggen dann debuggen und überprüfen Antwort, ich habe das gleiche Problem vor einiger Zeit, Log sollte nicht funktionieren, aber wenn ich in Textview eingestellt es funktioniert perfekt –

+0

danke sehr viel. Ich verwende 'TextView' nicht wegen vieler Probleme. Einfach, ich möchte 'Text' im Server überprüfen und Server antwortet mit' echo' neuer String 'text'. Ich erhalte diese Zeile und um meine Bewerbung fortzusetzen Prozess. – vanloc

0

gesetzt connection.setDoInput(true);

+0

Dank @mallaudin habe ich mein Problem gelöst. – vanloc