Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];

Вниз

проблема с загрузкой файлов через TIdHTTP   Найти похожие ветки 

 
hbreaker   (2006-06-16 17:32) [0]

вот есть у меня такая процедура, должна скачивать файл и сохранять его в temp каталоге. Но почему-то выскакивает такое сообщение при вызове fIdHTTP.Get
Project Photoportal.exe raised exception class EConvertError with message """ is not a valid integer value". Process stopped. Use Step or Run to continue.

procedure TGetPhotosThread.GetPhoto(photo_id:integer);
var
 strm: TFileStream;
 s: string;
begin
 try
   strm := TFileStream.Create(temp+inttostr(photo_id)+".jpg",fmCreate);
   s := "http://photoportal.dream.ua/soap/get_photo.php?session="+session+"&id="+inttostr(photo_id);
   fIdHTTP.Get(s);
   strm.CopyFrom(fIdHTTP.Response.ContentStream,fIdHTTP.Response.ContentStream.Size );
 finally
   strm.Free;
 end;
end;


fIdHTTP создается в конструкторе класса

constructor TGetPhotosThread.Create(_photos: PhotosStructArray; _temp: string; _session:string);
begin
 inherited Create(True);
 photos := _photos;
 temp := _temp;
 session := _session;
 fIdHTTP := TIdHTTP.Create(nil);
 Resume; // запустить
end;


 
tesseract ©   (2006-06-16 18:09) [1]


> inttostr(photo_id)

Здесь error, когда длина photo_id равна нулю, его нельзя преобразовывать в integer.


 
hbreaker   (2006-06-16 18:20) [2]

в смысле длина photo_id равна нулю ?

у меня строка s нормально формируется. ошибка когда идет вызов  fIdHTTP.Get(s);


 
Dmitrij_K   (2006-06-16 18:22) [3]

Первое, почему не IdHTTP.Get(s, strm)
Второе, ошибка в самом инди, пользуйся отладчиком и смотри где строка в число преобразуется


 
Dmitrij_K   (2006-06-16 18:28) [4]

Инди плохо реагирует на нестандартный заголовок, как-то давно пришлось в коде idhttp try except писать, т.к. сервер давал данные не в том формате


 
hbreaker   (2006-06-16 18:32) [5]

IdHTTP.Get(s, strm)
пробовал тоже самое... думал так будет:)
если не idhttp то чем ещё можно?
может.. как-то на сокетах. но если нада через прокси.. я пока не умею. где можно найти инфу на эту тему?


 
Slym ©   (2006-06-19 05:24) [6]

закачка по маске?
смотри почту...


 
hbreaker   (2006-06-19 18:23) [7]

нашел такую функцию, которая использует только WinInet + может работать через проки.

uses WinInet;

function DownloadFile(const FileURL, FileName: String): Cardinal;
var
hSession, hFile: HInternet;
Buffer: array[1..1024] of Byte;
BufferLen, fSize: LongWord;
f: File;
begin
Result := 0;
hSession := InternetOpen(’STEROID Download’,
INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned(hSession) then
begin
hFile := InternetOpenURL(hSession, PChar(FileURL), nil, 0,
INTERNET_FLAG_RELOAD, 0);
if Assigned(hFile) then
begin
AssignFile(f, FileName);
Rewrite(f,1);
fSize := 0;
repeat
InternetReadFile(hFile, @Buffer, SizeOf(Buffer), BufferLen);
BlockWrite(f, Buffer, BufferLen);
fSize := fSize + BufferLen;
until (BufferLen = 0);
CloseFile(f);
Result := fSize;
InternetCloseHandle(hFile);
end;
InternetCloseHandle(hSession);
end;
end;

Всё работает:))



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

Форум: "Сети";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.039 c
15-1161190851
ArtemESC
2006-10-18 21:00
2006.11.05
Как сохранить флеш-мультфильм?


15-1161079948
Empleado
2006-10-17 14:12
2006.11.05
Интересно, через какое время оно придет в каждый дом?


9-1138054239
Аццкий_рыцарь:)
2006-01-24 01:10
2006.11.05
TBackGroundSprite В DelphiX...


6-1150525928
grisme
2006-06-17 10:32
2006.11.05
Вопрос по WinSock


3-1157487661
Itonix
2006-09-06 00:21
2006.11.05
Decision Cube





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский