@ преобразовано в% 40 в запросе HTTPPost - PullRequest
6 голосов
/ 08 февраля 2012

Я пытаюсь отправить запрос в веб-службу .. когда я добавляю специальный символ @ в параметр, он добавляется в% 40.я проверила серверную часть .. они получают% 40 вместо @. Может кто-нибудь мне помочь?? вот мой код ..

httpclient = new DefaultHttpClient();
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("Email", "abc@gmail.com"));


httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
 ResponseHandler<String> responseHandler = new BasicResponseHandler();
String response = httpclient.execute(httppost,responseHandler);

Я также пытался использовать этот метод для предотвращения кодирования моего параметра.

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.PLAIN_TEXT_TYPE));

но поднял неподдерживаемый кодированный алгоритм

Пожалуйста, помогите мне из этого.

Ответы [ 4 ]

6 голосов
/ 08 февраля 2012

Вы используете UrlEncodedFormEntity, который будет URL-кодировать содержимое. Превращение @ в %40 нормально с этой кодировкой. Получатель должен иметь возможность декодировать это автоматически, хотя вам может потребоваться использовать правильный тип контента для этого, вероятно, application/x-www-form-urlencoded.

2 голосов
/ 08 ноября 2012

Используйте URLDecoder.decode(url), это будет полезно.

2 голосов
/ 08 февраля 2012

Вам нужно использовать что-то вроде URLDecoder на стороне сервера, чтобы вы могли преобразовать %40 обратно в @. То же самое относится и к другим специальным символам.

1 голос
/ 03 сентября 2015

Вы можете использовать

URLDecoder.decode("urlcontext", "UTF-8");

, чтобы удалить любой специальный символ из URL, который вы передаете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...