2016-09-20 40 views
0

我試圖通過一個變量從android到php,而在php中接收值不會在空白後獲得值。我傳遞變量一樣,在將變量從android傳遞到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); 
} 

在PHP端

$uname = $_GET['name']; 

雖然日誌變量,輸出是這樣 如:unmae:first second

WHIE在PHP端回聲它像這樣出現

例如:$uname = $_GET['name']; echo $uname; output:first

+0

出現這種情況,因爲在參數,你不能有一個空間,我認爲,試圖取代有標記的空間,然後在PHP中發現,符號,使它是一個空間 –

+0

將其替換爲「%20」 –

+0

目前還不清楚在變量名稱或其值中是否有空格。你沒有顯示你在做什麼。爲什麼我們必須猜測?如果它在'txtname'中,那麼URL參數及其值就有其他'禁止'字符。你首先要對整個字符串進行編碼。 – greenapps

回答

3

嘗試編碼您正在使用的名稱的String變量。這將防止壞字符或「+」替代空間 「%20」

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

或者更好,使用URI建設者

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

把ru.execute(URLEncoder.encode(urlSuffix,「utf-8」));然後從服務器端獲得消息 – Akhil

+0

它說什麼? – adalPaRi

+0

用+替換空白符合我的作用。 – Akhil

0
  1. 您應該使用URLEncoder

    String urlSuffix= URLEncoder.encode(name, "UTF-8"); 
    
  2. 指定方法GET

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