2016-09-20 1 views
0

Ich versuche, eine Variable von Android zu PHP übergeben, während der Empfang von Wert in PHP nicht Werte nach Leerzeichen erhalten. Ich bin vorbei Variable wie,Nicht erhalten Wert nach Whitespace beim Übergeben der Variablen von Android zu PHP

private void register(String txtname) { 
String urlSuffix = "?name="+txtname; 
Log.d("unmae",txtname); 
    class RegisterUser extends AsyncTask<String, Void, String>{ 
     ProgressDialog loading; 


     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      loading = ProgressDialog.show(UserRegister.this,"Please Wait","Loading..."); 
     } 

     @Override 
     protected void onPostExecute(String s) { 
      super.onPostExecute(s); 
      loading.dismiss(); 
         } 

     @Override 
     protected String doInBackground(String... params) { 
      String s = params[0]; 
      BufferedReader bufferReader = null; 
      try { 
       URL url = new URL(REGISTER_URL+s); 
       HttpURLConnection con= (HttpURLConnection) url.openConnection(); 
       bufferReader=new BufferedReader(new InputStreamReader(con.getInputStream())); 
       String result; 
       result = bufferReader.readLine(); 
       return result; 

      } catch (Exception e) { 

       return null; 
      } 
     } 
    } 

     RegisterUser ru = new RegisterUser(); 
     ru.execute(urlSuffix); 
} 

Auf Php Seite

$uname = $_GET['name']; 

Während die Variable einzuloggen, ist die Ausgabe wie diese ZB: unmae:first second

whie Echo in der PHP-Seite ist es erscheint so

ZB: $uname = $_GET['name']; echo $uname;

+0

GET geschieht dies, weil in dem Parameter, den Sie nicht einen Raum i denken können, versuchen Sie, den Raum mit einem Symbol zu ersetzen und dann in PHP, dass das Symbol finden und machen es ein Leerzeichen –

+0

Ersetzen Sie es mit "% 20" –

+0

Es ist unklar, ob Sie ein Leerzeichen im Variablennamen oder in seinem Wert haben. Du zeigst nicht, was du tust. Warum müssen wir raten? Wenn es in 'txtname' ist, dann gibt es andere 'verbotene' Zeichen für URL-Parameter und deren Werte. Sie sollten URL zuerst die gesamte Zeichenfolge codieren. – greenapps

Antwort

3

Versuchen Sie, die String Variable zu codieren, die Sie für Name verwenden. Dies wird schlechte Zeichen verhindern oder Leerzeichen ersetzen durch "+" oder "% 20"

ru.execute(URLEncoder.encode(urlSuffix, "utf-8")); 

Oder besser, verwenden Sie einen URI builder

// This will get the final URL for request 
String uri = Uri.parse(REGISTER_URL) 
       .buildUpon() 
       .appendQueryParameter("name", txtname) 
       .build().toString(); 
+0

Nach ru.execute (URLEncoder.encode (urlSuffix, "utf-8")); dann erhalten Nachricht von Server-Seite – Akhil

+0

Und was es sagt? – adalPaRi

+0

Beim Ersetzen von Leerzeichen mit + ist für mich Arbeit. – Akhil

0
  1. Sie verwenden sollten, der URLEncoder

    String urlSuffix= URLEncoder.encode(name, "UTF-8"); 
    
  2. die Methode an, die als

    String URL = "http://android.com/android_test/httpget.php? +name=urlSuffix" 
    
    URL url=new URL(ur_url); 
    urlConnection= (HttpURLConnection) url.openConnection(); 
    urlConnection.setRequestMethod("GET"); 
    
Verwandte Themen