2013-06-10 4 views
8

Delphi6 и XE3.Delphi: Indy - как получить тело ответа на ошибку?

Я хочу получить реальное тело ответа запроса. Но сервер делает ошибку 500. Затем Indy заменяет текст ответа описанием ошибки.

Эта страница предназначена для ответа 500 в нестандартных операциях, и нам нужно определить, что делать с текстом ответа.

Могу ли я получить текст ответа из IdHTTP или из объекта Exception, если код состояния равен 500?

Спасибо за любую информацию!

+0

который Indy версия? – mjn

+0

для XE3. Интересно, что FERrorMessage EIdHTTPProtocolException содержит ответ, но я не смог получить к нему доступ ... :-( – durumdara

+0

@durumdara: Почему вы не можете получить к нему доступ? 'EIdHTTPProtocolException.ErrorMessage' является общедоступным. –

ответ

13

Когда TIdHTTP встречает ошибку сервера, он поднимает EIdHTTPProtocolException исключение, где его свойство ErrorCode содержит код состояния HTTP (500, и т.д.), его свойство Message содержит текст состояния HTTP («Внутренняя ошибка», и т.д.), и его свойство ErrorMessage содержит основной текст ответа, если таковой имеется. Так, например:

try 
    IdHTTP1.Get(...); 
except 
    on E: EIdHTTPProtocolException do begin 
    // use E.ErrorCode, E.Message, and E.ErrorMessage as needed... 
    end; 
end; 
Смежные вопросы