2016-03-25 13 views
3

Sunucuya bir metin göndermek ve if(text != null) yeni metin değerlerini döndürmek için uygulamayı yaratıyorum. Ben sunucusundaki bir dosyayı kaydetmekPHP sunucusundan dize Android'e nasıl geçilir?

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

Öncesi ve bu dosyaya tüm verileri yazın: PHP Server

:

Benim kod böyle yapmak. Şu anda, Android verisine geri dönmek istiyorum, dosyaya kaydetmeye gerek yok. Ve Android kodu vardır: answernull neden bilmiyorum

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

.

Ben gibi verileri geri dönmelidir düşünüyorum:

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

+0

kurdu? – Eduard7

+0

@ Eduard7 Hiçbir şey göstermiyor. PHP dosyasında olduğunu düşünüyor musunuz? – vanloc

+0

$ _POST ["text1"] 'i $ _GET ["text1"] ile değiştirmeyi deneyin. – Eduard7

cevap

1

ile

$text = $_POST["text1"]; değiştirin. Verileri katılmadığımız, bu nedenle bu kesinlikle yanlıştır:

$text = $_POST["text1"]; 

Kullanım $ _GET [ "metin1"] yerine:

$text = $_GET["text1"]; 

Gerçi $ _REQUEST kullanabilir ancak IMO o kötü Pratik olarak $ _GET, $ _POST ve $ _COOKIE değişkenlerini birleştirir.

+0

@ Eduard7 sayesinde, 'sendToServer (final String text) sınıfını kullanıyorum ve bir satır gönderiyorum ve' echo 'yeni dize değerleri ile PHP sunucusundan yeni bir dize almak istiyorum. Yeni bir satır aldıktan sonra, uygulamam başka bir işleme devam edecek. – vanloc

1

ilk Android bölümünü ve hata ayıklama PHP kodu bırakın

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

Teşekkürler @Dhavalkumar Solanki: Değişiminizi denedim. Android istemcisinde, sunucu PHP'den herhangi bir değer almıyorum. Ben getTextFromInputStream'class içinde bir sorun olduğunu düşünüyorum çünkü bu sınıf önce bir dosyada değerler olsun. Şu an, PHP sunucusundaki "echo" dan gelen değerleri doğrudan aldım. – vanloc

+0

Merhaba ioewi bazı zaman günlüğü Http yöntemi için çalışmamalı, böylece hata ayıklama ve hata ayıklama yapabildiyseniz, bir süre önce aynı sorunu yaşıyorum, Log çalışmamalı ama textview'de ayarladığımda mükemmel çalışıyor –

+0

çok. Ben 'TextView' kullanmıyorum çünkü birçok problem var. Basit, sunucudaki 'text' i kontrol etmek istiyorum ve sunucu 'echo' new string' text' ile cevap veriyor. Süreci devam ettirmek için bu satırı alıyorum ve uygulamamda. – vanloc

0

tarayıcıda anyexample.com/main.php?text1=asd açarsanız ne olur connection.setDoInput(true);

+0

@mallaudin sayesinde, sorunumu çözdüm. – vanloc