Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос про поток при POST запросе. [D7, XP]


vegarulez ©   (2008-08-15 13:18:00) 

Привет всем мастерам!
Суть вопроса - требуется отправить методом 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 18:12:00) [1]

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


  (2008-08-17 18:12:00) [2]

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


  (2008-08-17 18:12:00) [3]

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


  (2008-08-17 14:48:00) [4]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо