2013-03-14 2 views
2

Когда я вызываю веб-сервис, я передаю определенные значения в этом URL-адресе.Создайте URL-адрес, который содержит '&'

Пример:

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

но что, если значения имеют «&» в them.When я сформировать такой URL, который содержит элемент с «&» в URL-брейки в этой точке возвращает код ошибки. Как мне решить эту проблему.

Пример:

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

проблема с этим URL является то, что он ломает в первом '&'

проблема может быть решена с помощью URLEncoder.encode(urlXml) http://www.tutorialspoint.com/html/html_url_encoding.htm

Thanx все

+0

использование% 26 вместо второй проверки этого юникода HTTP : //unicode-table.com/en/#0026 – Pragnani

ответ

3

Вы должны encode амперсанд & с %26. Так что ваш URL будет

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 = пользователь & пользователь & пароль = pass", "UTF-8");

+0

Кодирование здесь не будет кодировать амперсанды. Они останутся буквальными. – Shade

+0

Как этот 'URLEncoder' собирается провести различие между первым и вторым амперсандом ...?!? ;-) – FooF

+0

Вы можете поместить значение userName в кавычки. –

0

У меня есть код, работающий с буквальными амперсандами в нем. Ваш код может сломаться, потому что вы не обеспечивают действительную пару параметров ключ-значение:

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

Код ниже работ в производстве:

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) 
Смежные вопросы