Форум: "Начинающим";
Текущий архив: 2008.07.27;
Скачать: [xml.tar.bz2];
ВнизЗагрузка файла по 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c