Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.09.28;
Скачать: CL | DM;

Вниз

Вопрос про поток при POST запросе.   Найти похожие ветки 

 
vegarulez ©   (2008-08-15 13:18) [0]

Привет всем мастерам!
Суть вопроса - требуется отправить методом Post данные используя поток. Сделал, но использовал TIdMultiPartFormDataStream но там получается он вставлет ещё всякую информацию , т.к.  получается не просто запрос, а мультипарт.  
AValues.Values["Version"] := "2.01";
AValues.Values["TR_NR"] := "126";
AValues.Values["DSTACNT_NR"] := "410037637381";
AValues.Values["TR_AMT"] := "6.05";
AValues.Values["CUR_CD"] := "10643";
AValues.Values["ACT_CD"] := "1";
AValues.Values["CONT"] := "Иванов Иван Иванович";

MyList.LoadFromFile("./test.txt.asc");
AValues.Values["SIGN"]:=MyList.Text;

 PostStream:= TIdMultiPartFormDataStream.Create;
 Response := TIdStringStream.Create("");

 try
   PostStream.AddFormField("Version", AValues.Values["Version"]);
   PostStream.AddFormField("TR_NR", AValues.Values["TR_NR"]);
   PostStream.AddFormField("DSTACNT_NR", AValues.Values["DSTACNT_NR"]);
   PostStream.AddFormField("TR_AMT", AValues.Values["TR_AMT"]);
   PostStream.AddFormField("CUR_CD", AValues.Values["CUR_CD"]);
   PostStream.AddFormField("ACT_CD", AValues.Values["ACT_CD"]);
   PostStream.AddFormField("CONT", AValues.Values["CONT"]);
   PostStream. AddFormField("SIGN", AValues.Values["SIGN"]);

   // вот тут я смотрю что в запросе параметры разделены, т.к. мультипарт
   memo1.Lines.LoadFromStream(PostStream);

   // сама отправка
   HTTP.Post(cbURL.Text, PostStream, Response);

 finally
   MemoHTML.Text := Response.DataString;
   Response.Free;
   PostStream.Free;
   AValues.Free;
 end;          

Вопрос как сделать обычный просто запрос?  делал вот так:

MyList.Text:=
"Version=2.01"+
"&TR_NR=126"+
"&DSTACNT_NR=410037637381"+
"&TR_AMT=6.05"+
"&CUR_CD=10643"+
"&ACT_CD=1"+
"&CONT=Иванов Иван Иванович"+
"&SIGN="+TIdURI.ParamsEncode(
"-----BEGIN PGP MESSAGE-----"#10#13+
"Version: PGP 6.5.8"#10#13+
#10#13+
"owEBWwGk/okBFQMFAEg5G9NTVL2hVupyiQEBSiYIAJg38k/9M0U5NJBVZ0HdANxD"#10#13+
"EZva1ewzBzcO/oWXwcQkIdcSYgBdlhddxr7H435Zr1/0gCysqxQdeBszNb7K+fiz"#10#13+
"1SNdQyONWlRuvuzHORTuZPMT4YLfqNH675mjMBbGbO2x7xDgfZE+cMFpVPSnALeQ"#10#13+
"PzuUuUsc6+CPIgCUdmlgZgbgfjepxCH4n9dhznOmfx2YSg1fl1I9O/PNxWk7spLu"#10#13+
"06YCH0FUCwvICV2oHP5qnyZA3Pukj07L4e0cXj/IQYIgHMIgvYYxUaCPD/cY7qN0"#10#13+
"luAKNCQfAyNiHZXncerhS+vzaunsKN74HXLKz/FxtcR0l8+y7sFQaZPqXMU40Q+s"#10#13+
"QWIJdGVzdDYudHh0AAAAADEyNiYxJjQxMDAzNzYzNzM4MSY2LjA1JjEwNjQzJsji"#10#13+
"4O3u4iDI4uDtIMji4O3u4uj3"#10#13+
"=/Q+S"#10#13+
"-----END PGP MESSAGE-----");

//MyPGPSign.LoadFromFile("./test.txt.asc");

MyList.SaveToStream(TempStream);
HTTP.Post(cbURL.Text, TempStream, Response);
MemoHTML.Text := Response.DataString;


Но так не работает...
Нужно загрузить содержимое подписи из файла (как реализовано в этой строке
//MyPGPSign.LoadFromFile("./test.txt.asc");
), при том что остальные параметры уже буду добавлены в поток запроса.

Раньше просто сразу скопмпанованный запрос Post отправлял без потока, используя Tstrings, но запрос не проходил на сервере, т.к. подпись pgp косячилась и вот что мне сказали программисты(дескать почему она косячется):
"Это особенность объекта TidHTTP: если ему в методе POST передать список
строк (TStrings), то он все переносы строк заменить на знаки &, в итоге
подпись (которая содержит эти переносы) становится невалидной. Необходимо
перед передачей содержимое списка (через свойство Text) передать в поток
(TMemoryStream) и его передать в метод POST в качестве параметра, тогда
компонент не будет переформатировать запрос."

Подскажите как сделать.


 
имя   (2008-08-17 14:48) [1]

Удалено модератором


 
имя   (2008-08-17 18:12) [2]

Удалено модератором


 
имя   (2008-08-17 18:12) [3]

Удалено модератором


 
имя   (2008-08-17 18:12) [4]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2008.09.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
2-1219122526
kate158
2008-08-19 09:08
2008.09.28
сдвиг данных в dbgrid e на 1 вверх


3-1206767549
Ary
2008-03-29 08:12
2008.09.28
управление транзакциями


2-1218997207
Alral
2008-08-17 22:20
2008.09.28
Обращение к модулю из другого


15-1217960331
AlexDan
2008-08-05 22:18
2008.09.28
Тоже о рычагах.. и о законе сохранения энергии..


2-1219137611
AlexanderMS
2008-08-19 13:20
2008.09.28
Нужно ли делать такие вызовы перед выходом из программы?