Конференция "Сети" » HttpQueryInfo с атрибутом HTTP_QUERY_STATUS_TEXT
 
  • Тимохов Дима © (12.12.16 17:44) [0]
    Коллеги!

    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]
    Удалено модератором
 
Конференция "Сети" » HttpQueryInfo с атрибутом HTTP_QUERY_STATUS_TEXT
Есть новые Нет новых   [134427   +35][b:0][p:0.001]