2013-06-10 22 views
8

Delphi6 và XE3.Delphi: Indy - làm thế nào để có được cơ thể phản ứng về lỗi?

Tôi muốn nhận được nội dung phản hồi thực của yêu cầu. Nhưng máy chủ gặp lỗi 500. Sau đó, Indy thay thế văn bản phản hồi bằng mô tả lỗi.

Trang chủ này được thiết kế cho câu trả lời 500 trong các hoạt động không bình thường và chúng tôi cần xác định phải làm gì từ văn bản phản hồi.

Tôi có thể nhận được văn bản phản hồi từ IdHTTP hoặc từ một đối tượng Ngoại lệ khi mã trạng thái là 500 không?

Cảm ơn bạn đã thông tin!

+0

phiên bản Indy nào? – mjn

+0

cho XE3. Thật thú vị khi FERrorMessage của EIdHTTPProtocolException chứa phản hồi, nhưng tôi không thể truy cập nó ... :-( – durumdara

+0

@durumdara: Tại sao bạn không thể truy cập nó? 'EIdHTTPProtocolException.ErrorMessage' là tài sản công cộng –

Trả lời

13

Khi TIdHTTP gặp một lỗi máy chủ, nó đặt ra một EIdHTTPProtocolException ngoại lệ, nơi có tài sản ErrorCode của nó chứa các mã trạng thái HTTP (500, vv), tài sản Message nó chứa văn bản trạng thái HTTP ("Internal Error", vv), và thuộc tính ErrorMessage của nó chứa nội dung phản hồi, nếu có. Vì vậy, ví dụ:

try 
    IdHTTP1.Get(...); 
except 
    on E: EIdHTTPProtocolException do begin 
    // use E.ErrorCode, E.Message, and E.ErrorMessage as needed... 
    end; 
end; 
Các vấn đề liên quan