Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.27;
Скачать: CL | DM;

Вниз

Загрузка файла по HTTP   Найти похожие ветки 

 
KVV   (2008-06-24 19:46) [0]

Код взял где-то на форуме.


function GetInetFile(fileURL, FileName: String): boolean;
const
 BufferSize = 1024;
var
 hSession, hURL: HInternet;
 Buffer: array[1..BufferSize] of Byte;
 BufferLen: DWORD;
 f: File;
 sAppName: string;
begin
 Result:=False;
 hSession:=InternetOpen(PChar("IE"),INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);
 if hSession=nil then //Msg
 else try
   hURL:=InternetOpenURL(hSession,PChar(fileURL),nil,0,0,0);
   if hURL=nil then //Msg
   else try
     AssignFile(f, FileName);
     Rewrite(f,1);
     repeat
       InternetReadFile(hURL,@Buffer,SizeOf(Buffer),BufferLen);
       BlockWrite(f, Buffer, BufferLen)
     until BufferLen=0;
     CloseFile(f);
     Result:=True;
   finally InternetCloseHandle(hURL); end;
 finally InternetCloseHandle(hSession); end;
end;

function CheckInetUrlExist(url: string): boolean;
var
 hNet: HINTERNET;
 hUrl: HINTERNET;
begin
 Result := False;
 hNet:=InternetOpen(PChar("IE"),INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);
 if hNet=nil then //Msg
 else try
   hUrl:=InternetOpenUrl(hNet,PChar(Url),nil,0,INTERNET_FLAG_RELOAD,0);
   if hUrl=nil then //Msg
   else try
     Result:=Assigned(hUrl);
   finally InternetCloseHandle(hUrl); end;
 finally InternetCloseHandle(hNet); end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Button1.Enabled:=False; try
   If CheckInetUrlExist("http://www.nalog.ru/index.html")
   then GetInetFile("http://www.nalog.ru/index.html",
     "f:\!_Delme\index.html"
   );
 finally Button1.Enabled:=True; end;
end;


Есть несколько вопросов:
1. Если интернет не подключен, программа виснет на команде "InternetOpenURL" (только в XP), в Win98 выдается окно "Подключение удаленного доступа" (или что-то в этом роде) - отменяешь и все - программа завершается без загрузки.
2. Пару раз в XP зависание было и при подключенном интернете.

Можно ли каким-либо образом узнать, что интернет не подключен прежде, чем вызывать InternetOpenURL?
Или что-то нужно делать по-другому?

3. Если файла на сайте нет, возвращается HTML-код с сообщением об ошибке (т.е. файл-результат есть, но содержит HTML-код).

Можно ли узнать, что файла нет, не обрабатывая этот HTML-код.

4. Где-то на форуме видел другие варианты загрузки.
В них вместо "InternetOpenURL" использовались "InternetConnect",
"HTTPopenRequest", "HTTPsendRequest", "InternetQueryDataAvailable".
Что правильнее?


 
Palladin ©   (2008-06-24 20:49) [1]

WinInet, штука тонкая. А все это ты реализуешь именно через него. Думаю в твоем случае, все"же, лучше будет отработать через IdHTTP.


 
KVV   (2008-06-24 21:18) [2]

IdHTTP - это то, что в п.4 или что-то другое?
(Только чур сильно не пинать за вопрос)



Страницы: 1 вся ветка

Текущий архив: 2008.07.27;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.006 c
2-1214234765
savyhinst
2008-06-23 19:26
2008.07.27
Not enough timers available!


15-1213461414
Kostafey
2008-06-14 20:36
2008.07.27
С днем рождения ! 14 июня


11-1186297255
MTsv DN
2007-08-05 11:00
2008.07.27
MultiSelect in TreeView


3-1202816869
Kuibida
2008-02-12 14:47
2008.07.27
Что за база такая (форматы файлов *.d и *.i) ?


3-1202974636
abhtr
2008-02-14 10:37
2008.07.27
Можно ли изменить название поля в таблице Paradox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский