Форум: "Начинающим";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];
ВнизВопрос про передачу PGP Sign посредством IdHTTP(Indy10) Найти похожие ветки
← →
vegarulez © (2008-02-11 18:30) [0]Доброго времени суток мастера! Вопрос таков...
Передаю на сервер ряд параметров методом Post посредством IdHTTP (Indy10). Одним, из передаваемых параметров является PGP Sign файла. Так вот уходит всё нормально до сервака доходит, но он ругается на подпись... дело всё в том, что на сервере подпись приходит разбитая страным образом, поэтому он её не может правильно прочесть. А разбита она в тех местах, где стоит перевод каретки. Т.е. в PGP подписи перевод каретки - это тоже информативный символ. Т.е. скорее всего при отпрваке на сервер IdHTTP разбивает её именно таким образом. Как быть, подскажите?
← →
palva © (2008-02-11 18:38) [1]Подпись это файл?
Файл двоичный или текстовый.
Если текстовый, то выложите здесь первую строку.
Как вы пересылаете файл при помощи HTTP?
Файл который приходит на сервер имеет дополнительные символы?
← →
vegarulez © (2008-02-11 18:56) [2]1. Да. Файл.
2.Текстовый.
3. Целиком:-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8
iQEVAwUAR6/MmFNUvaFW6nKJAQEFggf/dmA5yEnn2ZkPWWlXJwMH+dldqAgxSbse
m3pPiR0sGFfry4Oslr5ZHoCAAcye4SL5+Svmgw7PLlBl+q5elM6InBYzGyRzs5iK
X1fNg0o/vxUkKWW2RqQBdcqeAG6M6YVV5zYPizFOPXTlCvM8q6HqMYBYQbJPGCWY
DyHdF6/xf3wf+w31MJzF/7B9xIxGTjVWoyWrhpmGprovIKiUPAU5SFVTe/OmvC1I
eR58gBktU+9NrmMtTMvmPk40teCfLiFILibmEvzNReAHPqLOHmDmWNKursjkRiiN
3R/MS0/9qR7uA2uoIR0PMrpxFr1VS7aYwotTT0hefK8h5ILy+3qgCA==
=BZHx
-----END PGP SIGNATURE-----
4.
Всё что передаётся на сервак находится в мемо (ну это пока для тестирования, для наглядности так делаю) mePostData.Lines (wordwrap:=false)
cbURL: TEdit;
mePostData: TMemo;
memoHTML: TMemo;
Response: TStringStream;
begin
...
Response := TStringStream.Create("");
HTTP.Post(cbURL.Text, mePostData.Lines, Response)
memoHTML.Lines.Text:=Response.DataString;
...
end;
5. Не очень понял... что значит дополнительные символы?
← →
palva © (2008-02-11 22:53) [3]> 5. Не очень понял... что значит дополнительные символы?
Ну я так понял ваше
> А разбита она в тех местах, где стоит перевод каретки.
Вот мне и не понятно. Разбита каким-то символом, которого исходно не было?
Ну то есть вы передаете одно, а на сервер приходит другое.
В подписи все переводы строк должны быть обязательно. Какие они - то ли пара RC LF, то ли один из этих символов - не важно. Пустая строка тоже информативна.
Какая у вас ошибка я все равно не понял.
← →
vegarulez © (2008-02-12 06:43) [4]Я привёл sign целиком она "разбита" просто переводом каретки.
Да.. я передаю одно а на сервер приходит уже совсем другой - компонент вставляет ещё символы.
у вас есть ася? мыл? телефон?
← →
palva © (2008-02-12 10:01) [5]А какие символы он вставляет? Может быть это URL-кодирование? Вот у вас есть фрагмент подписи
"5.8#13#10#13#10iQ"
Что в этом месте приходит на сервер (что вы предъявляете PGP)
← →
vegarulez © (2008-02-12 12:00) [6]вот что приходит на сервер...
SIGN=""-----BEGIN PGP SIGNATURE-----&Version: PGPfreeware 6.5.8&&iQEVAwUAR6/MmFNUvaFW6nKJAQEFggf/dmA5yEnn2ZkPWWlXJwMH dldqAgxSbse&m3pPiR0sGFfry4Oslr5ZHoCAAcye4SL5 Svmgw7PLlBlq5elM6InBYzGyRzs5iK&X1fNg0o/vxUkKWW2RqQBdcqeAG6M6YVV5zYPizFOPXTlCvM8q6HqMYBYQbJPGCWY&DyHdF6/xf3wf w31MJzF/7B9xIxGTjVWoyWrhpmGprovIKiUPAU5SFVTe/OmvC1I&eR58gBktU 9NrmMtTMvmPk40teCfLiFILibmEvzNReAHPqLOHmDmWNKursjkRiiN&3R/MS0/9qR7uA2uoIR0PMrpxFr1VS7aYwotTT0hefK8h5ILy 3qgCA==&=BZHx&-----END PGP SIGNATURE-----"""
← →
vegarulez © (2008-02-12 12:10) [7]т.е. перевод каретки заменяется на символ & что недопустимо в подписи...
подскажите как быть? как этого избежать?
← →
ketmar © (2008-02-12 13:12) [8]>[7] vegarulez © (2008-02-12 12:10:00)
взять, и поменять назад по получении. нежно и аккуратно.
или чинить код, который такое делает.
---
Understanding is not required. Only obedience.
← →
vegarulez © (2008-02-12 13:33) [9]
> взять, и поменять назад по получении. нежно и аккуратно.
к сожалению в работу сервера - я влезть не могу... есть пртокол взаимодействия с сервером.
Как его чинить?
← →
palva © (2008-02-12 13:44) [10]Ну, гипотеза такая, что каждая строка при посылке рассматривается как параметр, а на сервере параметры, как обычно, разделяются символом & Это означает, что если в внутри сообщения встречается символ &, то он будет заменен на %26
Можно уже на сервере заменить символ & на символ #10. А потом посмотреть, не встречается ли где символы % - их тоже надо обрабатывать.
Если это затруднительно, можно перед отправкой поставить в конце каждой строки дополнительно %0A, а потом концы строк убрать, то есть вытянуть все в одну строку. Возможно, заработает.
← →
ketmar © (2008-02-12 14:00) [11]>[9] vegarulez © (2008-02-12 13:33:00)
>в работу сервера — я влезть не могу
тогда плакать. или ты протокол реализовал криво, или сервер глупенький. тут только одно из двух.
---
Understanding is not required. Only obedience.
← →
vegarulez © (2008-02-12 14:09) [12]Сервер не глупенький. Ни я его писал. мне начальство дало протокол взаимодействия и дало задание написать, то что требуется. Так что я не могу ни поменять протокол ни влезть в работу сервера.
palva © (12.02.08 13:44) [10]
Не... вработу сервера я влезть не могу. Это чёрный ящик.
просто я так понял... я передаю Post`ом и компонента IdHTTP разбирает и URL декодирует ставя & после каждого перевода коретки...
разбирая по параметрам...
сечас попробовал всю подпись сделать в одну строку, заменив перевод коректки в подписи на %0D%0A - отправил на сервер... теперь сервер заменил знаки + на пустоты... сечас ещё их перекодирую на %2B ещё раз попробую отправить...
← →
ketmar © (2008-02-12 14:29) [13]>[12] vegarulez © (2008-02-12 14:09:00)
тьфу. всё ясно. обычный xxx-url-encoded. все символы, которые не буквы/цифры — заменяются на %hh (hh — hex-код). дополнительно учесть, что пробел кодируют плюсом.
---
Understanding is not required. Only obedience.
← →
vegarulez © (2008-02-12 14:41) [14]странно перебил знаки + на %2B но администратор смотря на сервере логи всё равно говорит что приходит сообщение с пробелами на тех местах где должен стоять знак +... т.е. получается IdHTTP так его отправляет... урленкодя на моей стороне... подскажите как быть?
← →
ketmar © (2008-02-12 14:43) [15]>[14] vegarulez © (2008-02-12 14:41:00)
выкинь индейца и отправь запрос руками. там дел-то на 5 строчек.
---
Understanding is not required. Only obedience.
← →
vegarulez © (2008-02-12 18:35) [16]индеец работает через SSL
подскажи как его выкинуть оставив SSL...
← →
ketmar © (2008-02-12 18:40) [17]>[16] vegarulez © (2008-02-12 18:35:00)
не подскажу. не знаю. %-)
---
Understanding is not required. Only obedience.
← →
vegarulez © (2008-02-13 06:22) [18]Народ нид хелп. Подскажите как быть? Как это обойти или заменить... Чтоб при передачи знака + или знака %2B IdHTTP корректно передавал его на сервер методом POST не заменяя его на пробел...
← →
Slym © (2008-02-13 06:51) [19]протокол какой?
столь длинный и "бинарный" (#13#10) поток обычно передают как MultipartFormData
← →
Slym © (2008-02-13 06:52) [20]приведи HTML форму которая "реально" правильно отправляет данные
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.048 c