Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2009, 18:58   #1
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
Печаль POST запрос

немогу правильно сформировать пост запрос через idHTTP
вобщем страница с которой работаем - http://wen.ru/gb/?uid=1&form=1
пишу такой код

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
Captcha:TMemoryStream;
s,CapchaID, sec_cap:string;
gif : TGifImage;
begin
gif := TGIFImage.Create;
s:=idHTTP1.Get('http://wen.ru/gb/?uid='+Edit1.Text+'&form=1');
CapchaID:=Copy(s,pos('<img src="/secure/gif.php?',s)+length('<img src="/secure/gif.php?'),pos('"',Copy(s,pos('<img src="/secure/gif.php?',s)+length('<img src="/secure/gif.php?'),15))-1);
sec_cap:=(Copy(CapchaID,pos(',',CapchaID)+1,length(CapchaID)-pos(',',CapchaID)+1));
captcha:=TMemoryStream.Create;
idHTTP1.Get('http://wen.ru/secure/gif.php?'+CapchaID, captcha);
captcha.SaveToFile('captcha.gif');
Image1.Picture.LoadFromFile('captcha.gif');
Captcha.Free;
gif.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
captcha, name, s, CapchaID, sec_cap : string;
params:tstringlist;
begin
s:=idHTTP1.Get('http://wen.ru/gb/?uid='+Edit1.Text+'&form=1');
CapchaID:=Copy(s,pos('<img src="/secure/gif.php?',s)+length('<img src="/secure/gif.php?'),pos('"',Copy(s,pos('<img src="/secure/gif.php?',s)+length('<img src="/secure/gif.php?'),15))-1);
sec_cap:=(Copy(CapchaID,pos(',',CapchaID)+1,length(CapchaID)-pos(',',CapchaID)+1));
captcha:=Edit2.Text;
name:=edit3.Text;
params:=TStringList.Create;
try
params.Add('author='+name);
params.Add('message'+ sec_cap +'='+Memo1.Lines.Text);
params.Add('tr=n');
params.Add('uid='+Edit1.Text);
params.Add('add=1');
params.Add('code'+ sec_cap +'='+captcha);
params.Add('cid=7257959');
params.Add('lng=ru');
idhttp1.Post('http://wen.ru/gb/',params);
finally
params.free;
end;
end;
но в post запросе где ошибаюсь с параметрами и ничего не работает. Подскажите пожалуйста - с какими параметрами я ошибаюсь
DeDoK вне форума Ответить с цитированием
Старый 09.07.2009, 19:18   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
<go method='post' href='http://wen.ru/gb/'><postfield name='author' value='$(author)'/>
<postfield name='message' value='$(message8522)'/>
<postfield name='tr' value='$(tr)'/>
<postfield name='uid' value='1'/>
<postfield name='add' value='1'/>
<postfield name='code' value='$(code8522)'/>
<postfield name='cid' value='7653187'/>
<postfield name='lng' value='ru'/>
</go>
как я понял вот поля Post запроса...
то есть эти все игры со второй частью капчи лишь для того чтоб запутать(что и получилось)
+попробуйте просниферить


вот я просниферил...
Цитата:
author=%D1%85%D0%B7
message=%D1%82%D0%B5%D1%81%D1%82
tr=n
uid=1
add=1
code=7026
cid=1709508
lng=ru
автор=хз
сообщение=тест


кстати там еще первая часть капчи нужна(а не вторая)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 09.07.2009 в 19:31.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.07.2009, 20:19   #3
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

а как вы получаете первую часть капчи?
пробую
(Copy(CapchaID,pos(',',CapchaID)+1, length(CapchaID)-pos(',',CapchaID)-1));
получаю бред.
я так понимаю, что копируем из CapcthaID, считаем от запятой, и копируем первые символы. как с помощью Length считать с самого первого символа?
DeDoK вне форума Ответить с цитированием
Старый 09.07.2009, 20:46   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
Copy(CapchaID,1, pos(',',CapchaID)-1)
примерно так....писал здесь....возможно -1 не нужно
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.07.2009, 23:24   #5
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

не работает(((((( что делать??? пишу так
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
captcha, name, s, CapchaID, sec_cap : string;
params:tstringlist;
begin
s:=idHTTP1.Get('http://wen.ru/gb/?uid='+Edit1.Text+'&form=1');
CapchaID:=Copy(s,pos('<img src="/secure/gif.php?',s)+length('<img src="/secure/gif.php?'),pos('"',Copy(s,pos('<img src="/secure/gif.php?',s)+length('<img src="/secure/gif.php?'),15))-1);
sec_cap:=Copy(CapchaID,1, pos(',',CapchaID)-1);
captcha:=Edit2.Text;
name:=edit3.Text;
params:=TStringList.Create;
try
params.Add('author='+name);
params.Add('message='+Memo1.Lines.Text);
params.Add('tr=n');
params.Add('uid='+Edit1.Text);
params.Add('add=1');
params.Add('code='+captcha);
params.Add('cid='+sec_cap);
params.Add('lng=ru');
idhttp1.Post('http://wen.ru/gb/',params);
finally
params.free;
end;
end;

Последний раз редактировалось DeDoK; 09.07.2009 в 23:39. Причина: немного поправил но все равно не работает(
DeDoK вне форума Ответить с цитированием
Старый 10.07.2009, 18:43   #6
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

пробовал через TWebBrowser - тот вобще ошибку выбивает(((((
писал так:
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
html_elements: OleVariant;
i: integer;
s : string;
Begin
WebBrowser1.Navigate('http://wen.ru/gb/?uid=1&form=1');
html_elements:=WebBrowser1.OleObject.Document.forms.item(0).elements;
for i:=0 to (html_elements.length -1) do
begin
s:='Имя элемента: ' + html_elements.item(i).name +
   '|Значение элемента: ' + html_elements.item(i).value +
   '|Имя тега: '+ html_elements.item(i).tagName +
   '|Тип: ' + html_elements.item(i).type;
   Memo1.Lines.Add(s);
end;
end;
но он вылетает по нажатию кнопки. хотя с другими сайтами работает. подскажите где я могу ошибатся? вроде ведь в post запросе все параметры указал верно
DeDoK вне форума Ответить с цитированием
Старый 12.07.2009, 00:48   #7
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

Ребята ну помогите пожалуйста. Очень надо
DeDoK вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
POST запрос в VBA motorway Microsoft Office Excel 1 04.07.2009 01:24
Post запрос с помощью Webrowser eldar Работа с сетью в Delphi 0 28.08.2008 17:33
post запрос Editor Работа с сетью в Delphi 4 20.04.2008 14:01
Как передать POST data через запрос в веб-приложение Anticrim Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) 3 03.10.2007 18:19