Конференция "Сети" » Вопрос про POST [D7, WinXP]
 
  • vegarulez © (06.11.08 19:14) [0]
    Всем доброго времени суток.
    Вопрос таков- почему когда отправляю на сервер запрос с помощью 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

    Народ... помогите... в чём тут дело?
  • Сергей М. © (06.11.08 20:18) [1]

    > STR_SEND


    Это что, TStringList ?
    А какой практический смысл в его использовании в дан.случае ?
  • Slym © (07.11.08 04:48) [2]
    STR_SEND.Values['a']:='1';
    STR_SEND.Values['b']:='2';
    IdHTTP1.Post('http://trampampam', STR_SEND, Response);
  • vegarulez © (07.11.08 20:55) [3]

    > Сергей М. ©   (06.11.08 20:18) [1]

    Не знаю как по другому stream сделать.


    > Slym ©   (07.11.08 04:48) [2]


    Хочу понять почему через стрим так происходит.
    Через Tstrings попробую тоже ради интереса посмотрю, что получится. Но с tgstrings не хочу делать - наелся, делаю со стримом... )
  • Palladin © (07.11.08 21:36) [4]
    что то ты хреново хочешь понять... куда копать - очевидней некуда...
  • vegarulez © (08.11.08 16:32) [5]
    Slym ©   (07.11.08 04:48) [2]
    Это же мультипарт.

    Palladin ©   (07.11.08 21:36) [4]
    По существу плз. Эмоции можно оставить при себе.
  • Сергей М. © (08.11.08 16:54) [6]

    > Не знаю как по другому stream сделать


    Что значит "stream сделать" ?

    SaveToStream не "делает stream" - он просто записывает данные в указанный стрим начиная с его тек.позиции.

    s: string;

    s := 'a=1&b=2&';
    Source.WriteBuffer(PChar(s)&, Length(s) + 1);
  • Slym © (10.11.08 05:54) [7]
    vegarulez ©   (08.11.08 16:32) [5]
    Это же мультипарт

    какой мультипарт?
    'application/x-www-form-urlencoded'

    vegarulez ©   (07.11.08 20:55) [3]
    Не знаю как по другому stream сделать.

    глянь в сторону TStringStream
  • cerber (16.11.08 12:19) [8]
    Вронятійле рабочий кусок
    //создаем поток 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;
  • cerber (16.11.08 12:21) [9]
    "Вронятійле" -))) это читать как "Вроде..."
 
Конференция "Сети" » Вопрос про POST [D7, WinXP]
Есть новые Нет новых   [134434   +27][b:0][p:0.001]