![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос про POST [D7, WinXP]
vegarulez © (2008-11-06 19:14:00)Всем доброго времени суток.
Вопрос таков- почему когда отправляю на сервер запрос с помощью IdHTTP в формате:
STR_SEND.Text:='a=1&b=2';
STR_SEND.SaveToStream(Source);
IdHTTP1.Request.ContentType:='application/x-www-form-urlencoded';
IdHTTP1.Post(' http://trampampam', Source, Response);
то параметр b на сервер приходит параметр с переносом каретки
т.е. на сервере параметр разбирается как 2#$D#$A
если же сделать вот так(не придумал ничего оригинальнее, как с этим бороться, просто ввёл перенос на следующий параметр, чтобы он был как бы с переносом...):
STR_SEND.Text:='a=1&b=2&';
STR_SEND.SaveToStream(Source);
IdHTTP1.Request.ContentType:='application/x-www-form-urlencoded';
IdHTTP1.Post(' http://trampampam', Source, Response);
то придёт то что нужно , т.е. 2
Народ... помогите... в чём тут дело?
cerber (2008-11-16 12:21:00) [1]"Вронятійле" -))) это читать как "Вроде..."
cerber (2008-11-16 12:19:00) [2]Вронятійле рабочий кусок
//создаем поток mem0 для записи принятых данных
mem0:=tmemorystream.Create;
//создаем стринглист для параметтров пост запроса
strl:=tstringlist.Create;
//заполняем пост-запрос нужными паратмерами
strl.Add('a=1');
strl.Add('b=2');
// отправляем пост-зарос и одновременно получаем ответ сервера в поток mem0
IdHTTP1.Post(' http://trampampam', strl,mem0);
//уничтожаем стринглист - если уже не нужен
strl.Free;
//указатель потока в начало - подготовка к четнию
mem0.Position:=0;
//грузим содержимое потока в memo1
if mem0.Size>0 then
memo1.Lines.LoadFromStream(mem0)
else
memo1.text:='Нет данных';
//уничтожаем поток- если уже не нужен
mem0.free;
Slym (2008-11-10 05:54:00) [3]vegarulez © (08.11.08 16:32) [5]
Это же мультипарт
какой мультипарт?
'application/x-www-form-urlencoded'
vegarulez © (07.11.08 20:55) [3]
Не знаю как по другому stream сделать.
глянь в сторону TStringStream
Сергей М. (2008-11-08 16:54:00) [4]
> Не знаю как по другому stream сделать
Что значит "stream сделать" ?
SaveToStream не "делает stream" - он просто записывает данные в указанный стрим начиная с его тек.позиции.
s: string;
s := 'a=1&b=2&';
Source.WriteBuffer(PChar(s)&, Length(s) + 1);
vegarulez (2008-11-08 16:32:00) [5]Slym © (07.11.08 04:48) [2]
Это же мультипарт.
Palladin © (07.11.08 21:36) [4]
По существу плз. Эмоции можно оставить при себе.
Palladin (2008-11-07 21:36:00) [6]что то ты хреново хочешь понять... куда копать - очевидней некуда...
vegarulez (2008-11-07 20:55:00) [7]
> Сергей М. © (06.11.08 20:18) [1]
Не знаю как по другому stream сделать.
> Slym © (07.11.08 04:48) [2]
Хочу понять почему через стрим так происходит.
Через Tstrings попробую тоже ради интереса посмотрю, что получится. Но с tgstrings не хочу делать - наелся, делаю со стримом... )
Slym (2008-11-07 04:48:00) [8]STR_SEND.Values['a']:='1';
STR_SEND.Values['b']:='2';
IdHTTP1.Post(' http://trampampam', STR_SEND, Response);
Сергей М. (2008-11-06 20:18:00) [9]
> STR_SEND
Это что, TStringList ?
А какой практический смысл в его использовании в дан.случае ?