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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2011, 20:50   #1
Son
Пользователь
 
Аватар для Son
 
Регистрация: 24.11.2008
Сообщений: 76
По умолчанию WinInet страница с Яндекса не загружается полностью

Помогите с такой проблемой. Загружаю страницу в выдачей Яндекса. Страница не загружается целиком. Вот код функции:
Цитата:
function GETURL_TOHTML(url :string; method : string; Content_Type :Ansistring = ''; param :Ansistring=''; Type_Acess :Ansistring = '') : String;//Получение страницы по url
const
BufferSize = 1024;//размер буфера загрузки
var
FHost,FScript,Type_Acess2 : string;
Flags_connection,Flags_Request,I,Su mmL, L,dwBytesRead : Cardinal;
hInternet, hConnect, hRequest : Pointer;
sR:string;
Q:boolean;
Rload:cardinal;
Buffer: array[1..BufferSize] of Char; //буфер для записи в файл
F:TFileStream;
begin
result := '';
//Выдергиваем хост
fHost := GetHostName(url);
//Выдергиваем скрипт
fScript := GetScriptName(url,fHost);
if Content_Type<>'' then
Type_Acess2 := 'Content-Type: ' + Content_Type + #13#10 + 'Content-Length:'+ inttostr(length(param))
else
Type_Acess2:='';
//Устанавливаем флаги
SetFlags(url,Flags_connection,Flags _Request);
SetFlags(url,Flags_connection,Flags _Request);
//Инициализируем WinInet
hInternet := InternetOpen(PChar('Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.5.30729; .NET4.0E)'),INTERNET_OPEN_TYPE_PREC ONFIG,Nil,Nil,0);
if hInternet=nil then
begin
InternetCloseHandle(hInternet);
SetMessage('Не удалось инициализировать WinInet.');
exit;
end;

//Открываем сессию
hConnect := InternetConnect(hInternet,PChar(FHo st),Flags_connection,nil,nil,INTERN ET_SERVICE_HTTP,0,1);
if hConnect=nil then
begin
InternetCloseHandle(hConnect);
InternetCloseHandle(hInternet);
SetMessage('Не удалось открыть сессию.');
exit;
end;

//Формируем запрос
hRequest := HttpOpenRequest(hConnect,PChar(uppe rcase(method)),PChar(fScript),HTTP_ VERSION,nil,Nil,Flags_Request,1);
if hRequest=nil then
begin
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnect);
InternetCloseHandle(hInternet);
SetMessage('Запрос не удался.');
exit;
end;

if HttpSendRequest(hRequest,PChar(Type _Acess2),length(Type_Acess2),PChar( param),length(param)) then
begin
SetMessage('Получение данных.');
I := 1;
RLoad:=0;
SummL:=0;
F := TFileStream.Create(ExtractFilePath( ParamStr(0))+'load.html', fmCreate);
repeat
Q := InternetReadFile(hRequest, @Buffer, 1024, RLoad);
F.Write(Buffer, RLoad);
SummL:=SummL+RLoad;
until Q and (Rload=0);
SetMessage('Загружено '+inttostr(RLoad)+' байт.');
f.Free;
end
else
if hConnect<>nil then
InternetCloseHandle(hConnect);
if hConnect<>nil then
InternetCloseHandle(hConnect);
if hInternet<>nil then
InternetCloseHandle(hInternet);
end;
Подскажите в чем может быть загвостка?
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
Son вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WebBrowser как узнать что страница полностью догрузилась Comer_Jus Работа с сетью в Delphi 6 01.07.2011 09:46
WinInet - не вся страница! sergeyrulit Общие вопросы C/C++ 0 06.01.2011 18:50
при нажатии на кнопку формы страница не загружается Arassir PHP 2 28.11.2010 20:07
Аналог функции "Сохранить как->Веб-страница, полностью" beemoto Работа с сетью в Delphi 1 23.11.2009 17:12