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

Вниз

TIdHTTPServer, ответ для клиента при закачке файла   Найти похожие ветки 

 
Свой   (2007-11-23 13:36) [0]

компонент TIdHTTPServer
клиен посылает запрось на файл : www.my.ru/1.zip
проверяю есть ли файл, его нету отсылаю клиенту страницу что нет файла!
НО у клиента уже запустилась программа (любой менеджер закачек и он сказиват страницу html), ТАК ВОТ как этому менеджеру закачет сообщить что файла нету (и он написал что файл отсутстыует) а потом вывести в браузер страничку????


 
Reindeer Moss Eater ©   (2007-11-23 13:41) [1]

проверяю есть ли файл, его нету отсылаю клиенту страницу что нет файла!

Клиент думает, что получает запрошенный ресурс
Чтобы не думал, в заголовке ответа не должно быть кода "200 OK"
Должно быть 404


 
Свой   (2007-11-23 13:50) [2]

мм если не сложно приведите код, просто не совсем понял куда это загнать (404)!


 
Reindeer Moss Eater ©   (2007-11-23 13:52) [3]

Посмотри на список параметров передаваемых в OnCommandGet


 
Свой   (2007-11-23 14:02) [4]

AThread: TIdPeerThread; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo

мне надо написать в AResponseInfo
а что не пойму


 
Reindeer Moss Eater ©   (2007-11-23 14:03) [5]

404 надо писать.


 
Свой   (2007-11-23 14:10) [6]

дык писал
AResponseInfo.ContentText:="404";
и так
AResponseInfo.ResponseText:="404";
результат никакой


 
Reindeer Moss Eater ©   (2007-11-23 14:12) [7]

ResponseText - это будущий боди документа в клиенте браузера.
В твоем случае там должен быть html текст страницы "not found".


 
Reindeer Moss Eater ©   (2007-11-23 14:14) [8]

Кроме того, я тебе сказал, что "писать надо" 404, а не "404"


 
Reindeer Moss Eater ©   (2007-11-23 14:15) [9]

Первое - это число, а второе - это строка.


 
Свой   (2007-11-23 14:18) [10]

не пойму что то, перегрелся видно
AResponseInfo.ResponseText:=моя страница где написано что файла нет

а как написать менеджеру что нет файла??
куда 404 написать то?


 
Reindeer Moss Eater ©   (2007-11-23 14:20) [11]

а что, там так дохрена мест (свойств у AResponseInfo) куда можно записать числовой код?


 
Свой   (2007-11-23 14:24) [12]

AResponseInfo.ResponseNo:=404;

не помогает тоже, или есть еще куда написать? indy 9 использую


 
Reindeer Moss Eater ©   (2007-11-23 14:27) [13]

Сначала устанваливаем AResponseInfo.ResponseNo:=404, а потом поди страницу с приветом через ServeFile посылаем.
Ага?


 
Свой   (2007-11-23 14:34) [14]

if fileexists(rez) then
    begin
    rez:=ExpandFileName(dir+doc);
    AResponseInfo.ContentType:="application/"+zapfile;
    serv.ServeFile(AThread,AResponseInfo,rez);
    exit;
    end
   else
    begin
AResponseInfo.ResponseNo:=404;
//aResponseInfo.ContentText:=pp.Content;-выключил и все равно файл он качает с текстом Internal Server Error
    exit;
    end;


 
Свой   (2007-11-23 14:37) [15]

aResponseInfo.ContentText:=cgi.ErrorMsg; отключил
тогда файл качает пустой


 
Reindeer Moss Eater ©   (2007-11-23 14:45) [16]

И какой загловок ответа виден в менеджере закачек?


 
Свой   (2007-11-23 14:46) [17]

т.е. при отсутствии файла пишу:
AResponseInfo.ResponseNo:=404; и все?

больше действий никаких дальше нету у меня! (пока)!

он все равно качает файл и т.д че надо еще то ему?
файл качается пустой если оставляю ErrorMsg на сервере то в файле интернал сервер еррор!


 
Reindeer Moss Eater ©   (2007-11-23 14:46) [18]

какой загловок ответа виден в менеджере закачек?


 
Свой   (2007-11-23 14:49) [19]

запрос http://127.0.0.1/1.zip

ответ менеджера:
файл является текстовой текстовой html страницей хотите сохранить этот файл с расширением htm?


 
Reindeer Moss Eater ©   (2007-11-23 14:51) [20]

Тогда точить надо не сервер, а твой менеджер закачек.
Вот как ведет себя регет с твоим HTTP сервером:

Info 273 14:44:59 23.11.2007 Соединяемся с localhost (127.0.0.1:90)
Output 274 14:44:59 23.11.2007 GET /test HTTP/1.0
Output 274   User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98)
Output 274   Accept: */*
Output 274   Referer: http://localhost:90/
Output 274   Host: localhost:90
Input 275 14:44:59 23.11.2007 HTTP/1.1 404 BLA BLA BLA
Input 275   Connection: close
Input 275   Content-Type: text/html
Input 275   Server: Indy/9.0.18
Error 276 14:44:59 23.11.2007 Error #80070002(Не удается найти указанный файл.) in CRgHttpSession::RequestFile()
Info 277 14:44:59 23.11.2007 Пауза 5 секунд


 
Свой   (2007-11-23 14:52) [21]

да запрос http://127.0.0.1/1.zip    ввожу сразу в экспрорере


 
Reindeer Moss Eater ©   (2007-11-23 14:53) [22]

ответ менеджера:

Мне реальный заголовок ответа сервера нужен был, а не рассказы твоего менеджера что он там думает про 404 страницу.


 
Anatoly Podgoretsky ©   (2007-11-23 14:59) [23]

> Свой  (23.11.2007 14:52:21)  [21]

Какой загловок ответа?


 
Свой   (2007-11-23 15:00) [24]

я не знаю!
как его посмотреть?


 
Reindeer Moss Eater ©   (2007-11-23 15:05) [25]

[20]


 
Свой   (2007-11-23 15:08) [26]

давай прогу кину на почту посмотрите ответ!


 
Reindeer Moss Eater ©   (2007-11-23 15:11) [27]

А что говорит ie на вводимый урл?


 
Свой   (2007-11-23 15:14) [28]

ie ничего не говорит сразу закачка замускается и все и потом тоже ничего


 
Reindeer Moss Eater ©   (2007-11-23 15:15) [29]

Блин, выруби свой менеджер и скажи что говорит ие на этот урл!


 
Свой   (2007-11-23 15:27) [30]

ИЕ говорит Internal Server Error при вырубленом менеджере


 
Reindeer Moss Eater ©   (2007-11-23 15:39) [31]

Все чудесатее и чудесатее.
На сервере интернал еррор, а менеджер при этом что-то умудряется оттуда высосать.


 
Anatoly Podgoretsky ©   (2007-11-23 15:45) [32]

> Reindeer Moss Eater  (23.11.2007 15:39:31)  [31]

Страницу с ошибкой 5хх.


 
Свой   (2007-11-23 15:48) [33]

дык он (менеджер) этот ответ и сахраняет в виде запрашиваемого файла с расширением htm
сервер может мой че то не так отвечает?


 
Reindeer Moss Eater ©   (2007-11-23 15:50) [34]

твой сервер по ходу вообще упал ничего не ответив.


 
Свой   (2007-11-23 15:53) [35]

может и так
запускаю под делфи и тестю
ща погляжу еще и отпишусь


 
Anatoly Podgoretsky ©   (2007-11-23 15:59) [36]

> Свой  (23.11.2007 15:48:33)  [33]

Так он и посылает ответ 5хх в html.


 
palva ©   (2007-11-23 16:19) [37]

Бывает, менеджер плохой. Он видит - расширение zip и сразу перехватывает, даже не удосужившись получить и проверить заголовки. У меня так было, когда я пробовал cgi программу с расширением exe. Менеджер перехватывал и начинал сохранять вэб страницу, которую выдавала CGI.


 
Свой   (2007-11-23 18:37) [38]

так давайте попорядку разберем

запросили файл, отсылаем так

procedure TForm1.servCommandGet(AThread: TIdPeerThread;
 ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
aResponseInfo.ContentType:="applications/zip";
serv.ServeFile(AThread, AResponseInfo, "d:\1.zip");

end;

1е где имя файла??? или как его передать?
(раз от раза вылетает то открывается файл текстом то скачавается но по имени запроса! (например 127.0.0.1 а не 1.zip)

если нет файла
procedure TForm1.servCommandGet(AThread: TIdPeerThread;
 ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
aResponseInfo.ResponseNo:=404;
потом можн послать файл html содержащий что инфо о том что файла нету?
serv.ServeFile(AThread, AResponseInfo, "d:\1.html");
end;


 
Reindeer Moss Eater ©   (2007-11-23 18:54) [39]

Это сказка про белого бычка.

Во втором случае когда страница 404 посылается клиенту с помощью ServeFile, то метод ServeFile посылает обычный заголовок с кодом 200 (все зашибись, забирай свой ресурс)
Откуда ему знать, что это страница для отображения ошибки not found ?

Кроме того, этот же ServeFile сам управляет полем ContentType


 
Reindeer Moss Eater ©   (2007-11-23 18:55) [40]

Скачай уже демосы от инди.


 
Anatoly Podgoretsky ©   (2007-11-23 19:01) [41]

> Reindeer Moss Eater  (23.11.2007 18:55:40)  [40]

А поможет?


 
Reindeer Moss Eater ©   (2007-11-23 19:18) [42]

должно. там как раз рассматриваемый случай есть.


 
Anatoly Podgoretsky ©   (2007-11-23 19:21) [43]

> Reindeer Moss Eater  (23.11.2007 19:18:42)  [42]

Ну я же не говорил, что нет, я спрашивал, а поможет?


 
Свой   (2007-11-23 20:28) [44]

скачал
с ответом там все понятно, если страницу красивую не выдавать...
а вот со скачкой там не все так хорошо не все файлы понимает (точнее расширения, рар все время зипом обзывает:)


 
Свой   (2007-11-23 20:50) [45]

ответ если нет файла
AResponseInfo.ResponseNo:=404;
aResponseInfo.ContentText:="тут че угодно"; (и своя страница тоже)
вообщем IE все понимает и дает ответ в виде любой страницы
любой менеджер закачет ответ
AResponseInfo.ResponseNo:=404;
понимает но aResponseInfo.ContentText:="тут че угодно";
не дает в браузер

Reindeer Moss Eater ©   (23.11.07 18:54) [39]
Кроме того, этот же ServeFile сам управляет полем ContentType
плохо управляет лучше самому указать



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

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

Наверх




Память: 0.57 MB
Время: 0.028 c
15-1194954330
Slimer
2007-11-13 14:45
2007.12.16
Открытие *.qrt файлов


2-1195890376
MaShechka
2007-11-24 10:46
2007.12.16
Как поменять название в шапке Message Dialog?


2-1195354236
Тип
2007-11-18 05:50
2007.12.16
смена директории


11-1181699539
Dosian
2007-06-13 05:52
2007.12.16
Ошибка в procedure ... message


1-1190813080
Иван_А
2007-09-26 17:24
2007.12.16
Изменить цвет строки ListView