2013-05-16 19 views
0

我正在通過獲取請求進行身份驗證的Web應用程序(並且我沒有其他選項),該方法已經工作,除了密碼包含特殊字符的用戶,例如有一個密碼:* cHara *。如果用戶和密碼組合是正確的響應是一些信息的JSON,否則我得到{有效:0}一個JSON,這裏的代碼:如何處理密碼字段GET請求中的特殊字符?

 url = new URL("http://www.secret.url.com.co"); 
     String RESOURCE = "/authLdap/"; 
     String pass = URLEncoder.encode(password,"UTF-8"); 
     tUrl = new URL(url + RESOURCE + "?usuario=" + usuario + "&clave=" + pass); 
     HttpURLConnection req; 
     req = (HttpURLConnection) tUrl.openConnection(); 
     req.setDoOutput(true); 
     req.setRequestMethod("GET"); 
     req.setRequestProperty("Content-Type", "application/json"); 
     BufferedReader in; 
     in = new BufferedReader(new InputStreamReader(req.getInputStream())); 

我應該如何編碼通過?

+1

URLEncode他們。 –

+0

什麼位於遠程端?它知道它必須URLDecode它得到什麼嗎? –

+0

在遠程端,我沒有控制權。其實我知道密碼的工作原理是因爲更深層次的是LDAP認證,即在其他使用LDAP的頁面中直接使用密碼,但是對於我和我的應用程序權限是有限的,並且僅通過此url無法直接訪問LDAP。 – jaundavid

回答

0

LDAP在URLEncoding之前轉義您的輸入。星號在LDAP(match-any)中有特殊含義,也許遠程認證服務沒有正確轉義。

更多信息可以在這裏找到:http://blog.dzhuvinov.com/?p=585