2013-05-16 20 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