2013-03-14 103 views
2

當我打電話給web服務時,我在該網址中傳遞了某些值。創建一個包含'&'的網址

例子:

https://website.com/webserviceName/login?userName=user&password=pass 

但如果該值極大,誰擁有「&」我形成包含「&」在這一點上URL休息返回錯誤代碼的項目,例如一個網址。我該如何解決這個問題。

例子:

https://website.com/webserviceName/login?userName=user&user&password=pass 

這個網址的問題是,它在第​​一個 '&'

問題爆發可以通過使用URLEncoder.encode(urlXml) http://www.tutorialspoint.com/html/html_url_encoding.htm

感謝名單大家

來解決
+0

使用26%的HTTP ://unicode-table.com/en/#0026 – Pragnani 2013-03-14 10:12:28

回答

3

您必須encode&符&%26。因此,您的網址將成爲

https://website.com/webserviceName/login?userName=user%26user&password=pass 

如果您的用戶名是不固定的,你想用URLEncoder.encode作爲@SudhanshuUmalkar建議,你應該只編碼

String url = "https://website.com/webserviceName/login?userName=" 
      + URLEncoder.encode(userName, "UTF-8") + "&password=" 
      + URLEncoder.encode(password, "UTF-8"); 

由於encode(String)已經過時的觀點,你應該使用encode(String, "UTF-8")或任何你的字符集。

2

使用URLEncoder.encode()方法。

url =「https://website.com/webserviceName/login?」 + URLEncoder.encode(「userName = user & user & password = pass」,「UTF-8」);

+0

此處的編碼不會對&符號進行編碼。他們將保持文字和s。 – Shade 2013-03-14 10:16:04

+0

'URLEncoder'如何區分第一個和第二個&符號...?!? ;-) – FooF 2013-03-14 10:16:04

+0

你可以把用戶名的值放在引號中。 – 2013-03-14 10:18:43

0

我有代碼工作與它字面&符號。您的代碼可能會中斷,因爲你不提供有效的鍵值參數對:

https://website.com/webserviceName/login?userName=user&user&password=pass 
                ^this shouldn't be like this 

低於生產工作的代碼:取代第二次檢查這對Unicode的

public static final String DATA_URL = "http://www.example.com/sub/folder/api.php?time=%s&lang=%s&action=test"; 
String.format (API.DATA_URL, "" + now, language)