Как получить ответ, даже если соединение дает ошибку в IdHttp?

При использовании TIdHttp вот так:

Memo1.Text := IdHTTP1.post(url,data);

Я могу получить ответное сообщение на memo1, если оно не выдает ошибку http. Но когда он дает http плохой запрос, Indy не дает мне контента. Я также использую try..except, но он только предотвращает ошибку и по-прежнему не дает мне контента.

Как я могу получить контент, даже если он возвращает ошибку http?

2 ответа

Когда происходит ошибка HTTP, TIdHTTP поднимает EIdHTTPProtocolException исключение. Это исключение содержит код состояния HTTP в своем ErrorCode свойство, текст статуса HTTP в его Message свойство, и данные ответа в его ErrorMessage имущество.

Попробуй этот код

Try
    Memo1.Text := IdHTTP1.post(url,data);
except on e: EIdHTTPProtocolException do
begin
    memo1.lines.add(idHTTP1.response.ResponseText);
    memo1.lines.add(e.ErrorMessage);
end;

e.ErrorMessage предоставит вам некоторую информацию о неверном запросе.

Другие вопросы по тегам