Главная страница
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.028 c
15-1217942065
DelphiN!
2008-08-05 17:14
2008.09.28
На рабочем столе не отображаются ярлыки


15-1217821033
Slider007
2008-08-04 07:37
2008.09.28
С днем рождения ! 4 августа 2008 понедельник


15-1217852962
Fynjy
2008-08-04 16:29
2008.09.28
ehlib4


2-1219081510
AlexDan
2008-08-18 21:45
2008.09.28
Ошибка компиллятора?


2-1219260710
Рома
2008-08-20 23:31
2008.09.28
bios