Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Обработать ответ от сервера [POST]


Автор: Sice 26.1.2011, 09:50
Помогите пожалуйста обработать запрос от сервера.
Вот код, который отсылает данные на сервер методом POST
Код

procedure TForm1.Button1Click(Sender: TObject);
begin

 data:=tstringlist.create;
 data.Add('get=5');
 data.Add('method=game');
 data.Add('user='+Edit1.Text);
 data.Add('key='+Edit2.Text);
 IdHTTP1.HandleRedirects:=true;
 PageProfile:=IdHTTP1.Post('http://site/game.php?', data);
 Data.Free;
 Memo1.Text:=PageProfile;

 end;

Приходит ответ и мне нужно из него извлечь значения тегов <money>значение</money> и вывести их в отдельный label.
Посмотрел функцию Pos, но так и не разобрался, как достать значение между тегами <money></money>

Заранее большое спасибо.

Автор: Poseidon 26.1.2011, 14:16
Ну самый простой (и возможно не самый лучший) вариант, это:

Код

Label1.Caption:= copy(PageProfile, pos('<money>',PageProfile)+7, pos('</money>',PageProfile)-pos('<money>',PageProfile)-7)


Это что бы разобраться, и работать будет правильно есть тег встречается только раз. Хотя, возможно, правильнее будет использовать регулярки или еще какие средства работы с текстом. Все от задачи зависит.

Автор: Sice 26.1.2011, 14:42
Цитата(Poseidon @ 26.1.2011,  14:16)
Ну самый простой (и возможно не самый лучший) вариант, это:

Код

Label1.Caption:= copy(PageProfile, pos('<money>',PageProfile)+7, pos('</money>',PageProfile)-pos('<money>',PageProfile)-7)


Это что бы разобраться, и работать будет правильно есть тег встречается только раз. Хотя, возможно, правильнее будет использовать регулярки или еще какие средства работы с текстом. Все от задачи зависит.

Работает smile спасибо вам большое милый человек smile

Автор: morpheyushka 2.2.2011, 13:38
А XMLDocument...там же явно xml в ответе пришел.
Код

XMLDocument.XML.Text := IdHTTP1.Post('http://site/game.php?', data);
XMLDocument.Active := True;
Memo1.Text := XMLDocument.DocumentElement.ChildNodes['money'].Text;
XMLDocument.Active := False;


Это если тег <money> дочерний тег главного.

Автор: Poseidon 2.2.2011, 14:35
Цитата(morpheyushka @  2.2.2011,  13:38 Найти цитируемый пост)
там же явно xml в ответе пришел
В ответе явно пришел html. А вот то, что xml, далеко не явно.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)