Просмотр полной версии : [Delphi] Проблема с символом "&" в post-запросе
frxmaster
28.01.2010, 18:24
При разработке программы столкнулись с такой проблемой:
Когда в пост-запросе передаётся ссылка такого вида:
http://mysite.ru/go?id=1775497&ssid=gyurtnrutk&midd=gfgfg
символ & распознается как дополнительный параметр в пост запросе и все что после него отправляется отдельно
есть ли какой-то метод корректно передать ссылку?
При разработке программы столкнулись с такой проблемой:
Когда в пост-запросе передаётся ссылка такого вида:
http://mysite.ru/go?id=1775497&ssid=gyurtnrutk&midd=gfgfg
символ & распознается как дополнительный параметр в пост запросе и все что после него отправляется отдельно
есть ли какой-то метод корректно передать ссылку?
Да ладно?
Чем отправляешь? Если на винсоках, то запрос будет выглядить так:
POST /go?id=1775497&ssid=gyurtnrutk&midd=gfgfg HTTP/1.1
Host: mysite.ru
....
....
....
postvalue1=postkey1&postvalue2=postkey2
При разработке программы столкнулись с такой проблемой:
Когда в пост-запросе передаётся ссылка такого вида:
http://mysite.ru/go?id=1775497&ssid=gyurtnrutk&midd=gfgfg
символ & распознается как дополнительный параметр в пост запросе и все что после него отправляется отдельно
есть ли какой-то метод корректно передать ссылку?
Значения параметров POST запроса должны передаваться в URL кодировке. А в ней символ амперсанда заменяется на %26
Чем отправляешь?
через idhttp
var
http_client : tidhttp;
params : :tstringlist;
message : string;
begin
message := 'http://domen.ru/12345&6789';
params.add('Message=' + message);
http_client.Post('URL', params);
end;
При этом постятся 2 параметра:
Message=http://domen.ru/12345
6789=
Хотя должно быть так:
Message=http://domen.ru/12345&6789
Пробовали функцию TIdURI.URLEncode, не помогло
Значения параметров POST запроса должны передаваться в URL кодировке. А в ней символ амперсанда заменяется на %26
Попробовал руками заменить, проходит нормально но ссылка уже получается битой почемуто
через idhttp
var
http_client : tidhttp;
params : :tstringlist;
message : string;
begin
message := 'http://domen.ru/12345&6789';
params.add('Message=' + message);
http_client.Post('URL', params);
end;
При этом постятся 2 параметра:
Message=http://domen.ru/12345
6789=
Хотя должно быть так:
Message=http://domen.ru/12345&6789
Пробовали функцию TIdURI.URLEncode, не помогло
Попробовал руками заменить, проходит нормально но ссылка уже получается битой почемуто
поставь перед & знак ^ .. может быть поможет...
поставь перед & знак ^ .. может быть поможет...
Не помогает, тоже самое - все что после & постится как другой параметр
Попробовал руками заменить, проходит нормально но ссылка уже получается битой почемуто
Что значит битой!?
Приведи реальный пример, на реальном сайте.
Ты через компоненту шлеш запрос ? если да то там есть опция передавать знак как знак и ли его аски код.
Что значит битой!? Приведи реальный пример, на реальном сайте.
Например http://tinyurl.com/62cvp&random - норм редиректит
http://tinyurl.com/62cvp%26random - не редиректит
Ты через компоненту шлеш запрос ? если да то там есть опция передавать знак как знак и ли его аски код.
Да, нашел, спасиб.
Всем спасибо, решили проблему
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot