1. Ten&Ten01.05.2025 at 3:04 AMот
  2. DAVINCI01.05.2025 at 2:45 AMот
Loading...

Получение ответа при ошибке 400 [delphi, indy]

Discussion in 'С/С++/Pascal/Delphi' started by CodeNet, 31.05.2017.

  1. CodeNet

    CodeNet

    Статус:
    Оффлайн
    Joined:
    28.10.16
    Messages:
    151
    Репутация:
    11 +/-
    Вновь мне пришлось столкнуться с столь глючной библиотекой, как Indy.
    Версия — Delphi XE3, стандартный пак.

    Ситуация следующая. Отправляю POST запрос на сайт, в случае успешного действия код ответа - 400, и при этом передается много важной информации в ответе. Моя задача - считать этот ответ.

    Когда-то была подобная задача, решил через onWorkEnd, но сейчас напрочь забыл, как это делал. В тырнете нарыл следующие варианты:

    Code:
    try
      ...
    except
    {1}  
      on E: EIdHTTPProtocolException do
        Response := E.MessageText;
    {1}
    {2}
      Response := HTTP.Response.{куча свойств};
    {2}
    end;
    Первый вариант отдал мне 2 буквы в неведомой мне кодировке. Второй отдал лишь описание ошибки 400 :)
    Пытался убирать все отправляемые заголовки, ибо грешил на кодировку в них, но не помогло.

    Нужны советы...
     
  2. DIR724

    DIR724

    Статус:
    Оффлайн
    Joined:
    16.11.13
    Messages:
    693
    Репутация:
    289 +/-
    я чет не пойму " в случае успешного действия код ответа - 400"
    это 400 Bad Request
    что ты там сможешь считать?
     
  3. CodeNet

    CodeNet

    Статус:
    Оффлайн
    Joined:
    28.10.16
    Messages:
    151
    Репутация:
    11 +/-
    В том то и прикол, сервер генерирует код 400, но при этом шлет XML ответ :)
     
  4. CodeNet

    CodeNet

    Статус:
    Оффлайн
    Joined:
    28.10.16
    Messages:
    151
    Репутация:
    11 +/-
    Нашел решение, вдруг кому понадобится

    Code:
    HTTP.HTTPOptions := [hoWantProtocolErrorContent];
    -----
    HTTP.Get('', [400]);
     
    Last edited: 05.06.2017