2013-06-10 23 views
8

Delphi6 ve XE3.Delphi: Indy - yanıt gövdesini hata durumunda nasıl alabilirim?

Bir isteğin gerçek yanıt gövdesini almak istiyorum. Ancak sunucu hata yapar. Ardından Indy, yanıt metnini hatanın açıklamasıyla değiştirin.

Bu anasayfa, anormal olmayan işlemlerde de 500 yanıt için tasarlanmıştır ve yanıt metninden ne yapılacağını belirlememiz gerekir.

Durum kodu 500 olduğunda, IdHTTP veya bir Exception nesnesinden yanıt metni alabilir miyim?

Herhangi bir bilgi için teşekkürler! TIdHTTP bir sunucu hatasıyla karşılaştığında

+0

Hangi Indy sürümü? XE3 için – mjn

+0

. EIdHTTPProtocolException's FErrorMessage'in yanıt içerdiği ilginç ancak ona erişemedim ... :-( – durumdara

+0

@durumdara: Neden buna erişemiyordunuz? 'EIdHTTPProtocolException.ErrorMessage' bir kamu malı. –

cevap

13

, onun ErrorCode mülkiyet HTTP durum kodunu (500 gibi) içeren bir EIdHTTPProtocolException istisna, yükseltir, onun Message mülkiyet HTTP durum metni ("İç hata", vs) içerir ve ErrorMessage özelliği, varsa yanıtın gövde metnini içerir. Örneğin, örneğin:

try 
    IdHTTP1.Get(...); 
except 
    on E: EIdHTTPProtocolException do begin 
    // use E.ErrorCode, E.Message, and E.ErrorMessage as needed... 
    end; 
end;