Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

HttpQueryInfo с атрибутом HTTP_QUERY_STATUS_TEXT


Тимохов Дима ©   (12.12.16 17:44

Коллеги!

1. Пользуюсь WinInet.

После вызова InternetOpenUrl хочу определить статус: код и текст.
WinInetHandle := InternetOpenUrl(...);

Код статуса определятся просто:
HttpQueryInfo(WinInetHandle, HTTP_QUERY_STATUS_CODE or HTTP_QUERY_FLAG_NUMBER, @Status, Size, index)

Текст статуса тоже вроде просто:

Size := 1024;
SetLength(StatusText, Size);
if HttpQueryInfo(WinInetHandle, HTTP_QUERY_STATUS_TEXT, @StatusText[1], Size, 0) then
begin
  SetLength(StatusText, Size);
  ... StatusText - текст статуса
end


, но есть сомнение...

2. Вопросы:
  а. Верно так получать текст статуса во всех случаях?
  б. Текст статуса может быть кириллицей? И как тогда его получать?

ЗЫ К RFC 2616 плз не отсылать.


iop ©   (12.12.16 19:30[1]

во всех случаях статус текст так получать можно,
но не во всех получишь


Тимохов Дима ©   (12.12.16 20:02[2]


> iop ©   (12.12.16 19:30) [1]

Тебе скучно что-ли?


> Тимохов Дима ©   (12.12.16 17:44) 

Поисследовал вопрос.

Ну вообще RFC 2616 в секции 6.1.1 Status Code and Reason Phrase говорит о том, что Reason-Phrase = *<TEXT, excluding CR, LF>, где TEXT = <any OCTET except CTLs, but including LWS>, где OCTET =  <any 8-bit sequence of data>. Т.е. по идее сюда и кириллица может попасть, и UTF-8.

Коллеги-практики HTTP, как с клиентской стороны, так и с серверной: бывают Reason Phrase кириллическими?


iop ©   (12.12.16 20:08[3]

там же черным по белому написано,
что все что обязательно - это класс кода ответа (первый символ)
на него и только на него надо реагировать.

остальные символы к могут быть кастомизированы в неуказанные в рфц значения.

и про ризон-фрейз тоже сказано, то в рфц перечислены рекомендованные значения статус-текста, и что никому не возбраняется локализовать их.
например возвращать статустекст в японских иероглифах или вообще сделать его пустым.


iop ©   (12.12.16 20:10[4]

бывают Reason Phrase кириллическими?

да хоть древнеславянским или арамейским.


Тимохов Дима ©   (12.12.16 20:30[5]


> iop ©   (12.12.16 20:10) [4]

Спасибо, дорогой друг, ты мне очень помог. Честно)

Пришлось апачь и PHP поставить и кастомизированные заголовки возвращать для теста из PHP. Все верно - как в RFC-2616 и написано: любой TEXT из 8-битников он воспринимает (хоть кириллицу, хоть UTF-8), а дальше сам на клиенте решай, что с этим делать.

Еще раз спасибо.

Вопросов больше нет.


ЯЧтсия   (09.01.17 14:48[6]

Удалено модератором


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо