powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / получение параметра http-запроса с амперсантом
13 сообщений из 13, страница 1 из 1
получение параметра http-запроса с амперсантом
    #33407090
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу jsp-страницу. Получаю в ней http-параметр:

String str = request.getParameter("param_name");

Проблемма в том, что если этим параметром передавать строку содержащую амперсант, то getParametr() даст мне только ту часть строки, которая до амперсанта, а хотелось бы получить её полностью, т.е. если

param_name = "abc&def", то str="abc", а надо чтобы str="abc&def";

Данные передаются post-ом.

Я думаю, что это происходит потому, что то, что после амперсанта считается названием второго параметра.

Подскажите, плз, как быть в этой ситуации.
...
Рейтинг: 0 / 0
получение параметра http-запроса с амперсантом
    #33407114
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
получение параметра http-запроса с амперсантом
    #33407115
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
придумать дргугой формат передачи данных или закодировать амперсант другим спецсимволом
...
Рейтинг: 0 / 0
получение параметра http-запроса с амперсантом
    #33407128
Может повторюсь,
но идея следующая
передавать амперсант в виде %26
на стороне сервера делать URLDecoder.decode(getParameter(param_name), "Windows-1251");
...
Рейтинг: 0 / 0
получение параметра http-запроса с амперсантом
    #33408182
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нарисовать форму с методом GET, то как раз это и можно подсмотреть:)
Код: plaintext
1.
2.
3.
4.
<form name="testForm" method="get">              
  <input type="text" name="value" value="&a">
  <input type="submit"/>
</form>
...
Рейтинг: 0 / 0
получение параметра http-запроса с амперсантом
    #33409515
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не совсем полно всё описал: дело в том, что я не могу ничего менять в реквесте, не могу заставить человека, который шлёт моей jsp запросы поменять что-тов коде, заменить там амперсанты на другие символы или ещё что-то. Известно только одно, что он передаёт мне данные post-ом как данные формы и задаёт content-type=application/x-www-form-urlencoded.
Соответственно, я должен декодировать его урл в jsp и только потом взять параметр, но как это сделать?

я нашёл, что в java есть для этого спец. класс java.net.URLDecoder, который как раз и декодирует такие данные:

java.net.URLDecoder.decode(encoded_url,"UTF-8");

но как мне в jsp получить URL вместе со всеми параметрами, чтобы можно было его декодировать?

request.getRequestURL() даёт только сам URL без параметров, напишите просто кто знает как это надо написать в jsp?
...
Рейтинг: 0 / 0
получение параметра http-запроса с амперсантом
    #33410967
AlexVer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
request.getQueryString()
...
Рейтинг: 0 / 0
получение параметра http-запроса с амперсантом
    #33412410
Знаток
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verterдело в том, что я не могу ничего менять в реквесте, не могу заставить человека, который шлёт моей jsp запросы поменять что-тов коде, заменить там амперсанты на другие символы или ещё что-то.

это невозможно.

как понять в случае

"?p1=asd&p2=qwe"

передается один параметр p1 со значением asd&p2=qwe или два параметра.

можно, конечно, самому делать разбор строки и смотреть на "=".
...
Рейтинг: 0 / 0
получение параметра http-запроса с амперсантом
    #33426093
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
request.getQueryString() даёт строку только в случае get-запроса, а вот в моём случае он даёт null
...
Рейтинг: 0 / 0
получение параметра http-запроса с амперсантом
    #33426156
Фотография Грасов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verterя не совсем полно всё описал: дело в том, что я не могу ничего менять в реквесте, не могу заставить человека, который шлёт моей jsp запросы поменять что-тов коде, заменить там амперсанты на другие символы или ещё что-то. Известно только одно, что он передаёт мне данные post-ом как данные формы и задаёт content-type=application/x-www-form-urlencoded.
Соответственно, я должен декодировать его урл в jsp и только потом взять параметр, но как это сделать?

я нашёл, что в java есть для этого спец. класс java.net.URLDecoder, который как раз и декодирует такие данные:

java.net.URLDecoder.decode(encoded_url,"UTF-8");

но как мне в jsp получить URL вместе со всеми параметрами, чтобы можно было его декодировать?

request.getRequestURL() даёт только сам URL без параметров, напишите просто кто знает как это надо написать в jsp?
а как на твою jsp поступает запрос? браузеры амперсанд (&) заменяют
на %26. и чо?
...
Рейтинг: 0 / 0
получение параметра http-запроса с амперсантом
    #33426166
Фотография Грасов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Крошкин ДимонМожет повторюсь,
но идея следующая
передавать амперсант в виде %26
на стороне сервера делать URLDecoder.decode(getParameter(param_name), "Windows-1251");

не надо ничего такого делать.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<form action="" method="get">
  <input name="man" value="asd&psd"/><input type="submit" value="GO"/>
</form>
<br/>
<%
String s = request.getParameter("man");
%>
s = <%=s%>

и все.
...
Рейтинг: 0 / 0
получение параметра http-запроса с амперсантом
    #33431658
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет никакой формы! И данные передаются методом post из приложения на C++.

Решил проблему так:

в jsp-шке пишу:

InputStreamReader in = new InputStreamReader(request.getInputStream());
char buff[] = new char[request.getContentLength()];
n.read(buff, 0, request.getContentLength());
String str_request = new String(buff);

получаю таким макаром гольную строку с названиями параметров, но это можно распарсить и вычленить нужное. У нас был вообще один параметр, поэтому его выкинул и просто сразу стали передавать его занчение.
...
Рейтинг: 0 / 0
получение параметра http-запроса с амперсантом
    #33431772
грсв
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
verterнет никакой формы! И данные передаются методом post из приложения на C++.
послать на..й тех, кто писал приложение на си++, ибо они положили
коешто на спецификацию. соответственно, и ты имеешь право класть
на тех, кто написал. это правильно.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / получение параметра http-запроса с амперсантом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]