1. MR-X12.03.2025 в 17:09от
  2. D1zo12.03.2025 в 17:04от
Загрузка...

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

Тема в разделе "С/С++/Pascal/Delphi", создана пользователем CodeNet, 31.05.2017.

  1. CodeNet

    CodeNet

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

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

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

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

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

    DIR724

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

    CodeNet

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

    CodeNet

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

    Код:
    HTTP.HTTPOptions := [hoWantProtocolErrorContent];
    -----
    HTTP.Get('', [400]);
     
    Последнее редактирование: 05.06.2017