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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.049 c
15-1194926298
MBo
2007-11-13 06:58
2007.12.16
Охранять надо интеллектуальную собственность...


2-1195642569
Alex_C
2007-11-21 13:56
2007.12.16
Странная проблема с ShowMessage


2-1195383631
WFS
2007-11-18 14:00
2007.12.16
Можно ли написать обработчик события для динамической кнопки?


15-1195087241
Саунд
2007-11-15 03:40
2007.12.16
асм в делфи


2-1195674013
WFS
2007-11-21 22:40
2007.12.16
Вопрос про формулы





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