Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.12.2011, 10:32
ProDaNTe ProDaNTe вне форума
Новичок
 
Регистрация: 25.12.2011
Сообщения: 75
Репутация: 10
По умолчанию Wininet и POST запрос

Есть сайт freedebrid нужно отправить POST запрос и получить страницу с выполненным скриптом! Короче уже всякую фигню начал вставлять но приходит или таже страница либо вообще 0 байт! Помогите плиз!
Код:
Header:='document.forms['+Form1.sLabel22.Caption+'].submit();'+#13+'Content-Type: application/x-www-form-urlencoded';
   hInet := InternetOpen('Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.6.37 Version/11.00',
  PRE_CONFIG_INTERNET_ACCESS,
    nil,
    nil,
    0);
    hURL := InternetOpenURL(hInet,
    PChar('http://www.freedebrid.fr/download'),
    nil,
    0,
    INTERNET_FLAG_RELOAD,
    0);
hRequest:=HttpOpenRequest(hURL,'POST',pchar(Header),nil,nil,0,0,0);
HttpSendRequest(hURL, pchar(Header),length(Header),PChar('post=mypostdata'), Length('post=mypostdata'));
Админ: Пользуемся тегами для оформления кода!

Последний раз редактировалось Admin, 25.12.2011 в 15:49.
Ответить с цитированием
  #2  
Старый 25.12.2011, 11:09
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Content-Type есть, а Content-Length?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 25.12.2011, 11:21
ProDaNTe ProDaNTe вне форума
Новичок
 
Регистрация: 25.12.2011
Сообщения: 75
Репутация: 10
По умолчанию

Цитата:
Content-Type есть, а Content-Length?
А зачем может просто правильный вариант подкинешь, как вообще это правильно сделать и откуда размер взять?
Ответить с цитированием
  #4  
Старый 25.12.2011, 13:40
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

правильный размер:
Код:
Length('post=mypostdata');
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 25.12.2011, 19:48
ProDaNTe ProDaNTe вне форума
Новичок
 
Регистрация: 25.12.2011
Сообщения: 75
Репутация: 10
По умолчанию

Делаю так,запрос отправился но принимает в снифере показывает что в теле пост запроса буквы идут через пробел и соответственно запрос считается не верным т.е. нужно url=345, а отправляет u r l = 3 4 5!
Код:
procedure TFireThread.Execute;
var
Header,code,post:String;
sizex,indexx:Cardinal;
fBufing:array [1..1024] of byte;
ReadLen:Cardinal;
stoping:Boolean;
t:Cardinal;
f:file;
hurl,hinet,hRequest:HINTERNET;
begin
  inherited;
sizex:=256;
indexx:=32;
stoping:=false;
post:='url='+Form1.sLabel22.Caption;
t:= Length(post);
Header:='Referer: http://www.freedebrid.fr/download'+#13+
'Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1'  +#13+
'Accept-Language: ru,ru-RU;q=0.9,en;q=0.8 '+#13+
'Accept-Encoding:gzip, deflate'+#13+
'Connection: Keep-Alive '+#13+
'Content-Type: application/x-www-form-urlencoded';
   hInet := InternetOpen('Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.60',
  INTERNET_OPEN_TYPE_PRECONFIG,
    nil,
    nil,
    0);
hUrl:=InternetConnect(hInet,PChar('www.freedebrid.fr'),INTERNET_DEFAULT_HTTP_PORT,nil,nil,INTERNET_SERVICE_HTTP,0,0);
hRequest:=HttpOpenRequest(hURL,'POST',pchar('/download'),'HTTP/1.1',nil,0,0,0);
HttpSendRequest(hRequest,PChar(Header),Length(Header),PChar(post),t);
Form1.sRichEdit1.Lines.Add(Header);
    AssignFile(f,ExtractFilePath(Application.ExeName)+'firebird.html');
    Rewrite(f,1);
 while stoping=false do
  begin
InternetReadFile(hRequest, @fBufing, SizeOf(fBufing), ReadLen);
Form1.sRichEdit2.Lines.Add('Прочитанно'+' '+IntToStr(ReadLen));
if ReadLen=0 then begin
stoping:=true;
end else begin
BlockWrite(f, fBufing, ReadLen);
end;
  end;
CloseFile(f);
InternetCloseHandle(hUrl);
InternetCloseHandle(hInet);
Terminate;
end;

Последний раз редактировалось ProDaNTe, 25.12.2011 в 21:37.
Ответить с цитированием
  #6  
Старый 25.12.2011, 22:45
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Код не читал, но очень похоже, что запрос проходит в широких строках (aka WideString). В делфи начиная с N-ной версии (N~9) String стало синонимом WideString. Попробуйте использовать AnsiString.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #7  
Старый 26.12.2011, 06:26
ProDaNTe ProDaNTe вне форума
Новичок
 
Регистрация: 25.12.2011
Сообщения: 75
Репутация: 10
По умолчанию

Bargest, Спасибо!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:44.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025