2016-03-21 34 views
1

Güvenilmeyen bir TLS (SSL) sertifikasına sahip bir etki alanı kullanıyorum, böylece bir şeyler hatalarını ayıklayabileyim.Inno Kurulumu Özel durum yakalanmadı

procedure test(); 
var 
    WinHttpReq: Variant; 
begin 
    WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1'); 
    try 
    WinHttpReq.Open('POST', 'https://tv.eurosport.com/', False); 
    WinHttpReq.SetRequestHeader('Content-Type', 'application/json'); 
    WinHttpReq.Send(''); 
    except 
    MsgBox(IntToStr(WinHttpReq.Status), mbError, MB_OK); 
    end; 
end; 

durumda ben HTTP durum kodunu yazdırmak istiyorum isteği ile bir hata oluştu:

Bu

benim kodudur.

sorun except fıkrada hat idam asla olmasıdır ve bunun yerine aşağıdaki hatayı alıyorum:
enter image description here

Ben ayıklayıcı ekli olmadan yürütülebilir çalıştırmak bile hala hatalara neden olur.

Inno Kurulumu'nda OleObject özel durumunu nasıl ele alırım? Beklediğiniz gibi

cevap

1

, WinHttpReq.Send O istisna, except bloğu tarafından yakalanan

The host name in the certificate is invalid or does not match

atar. except maddesinin asla yürütülemediği doğru değil!

WinHttpReq.Status (HTTP durum kodu) okumayı denediğinizde except bloğunda. Ancak, henüz bir HTTP durum kodu yok, çünkü sertifika doğrulaması, HTTP değişiminden önce olur. Yani ikinci istisna WinHttpReq.Status gaz giderici tarafından atılır:

WinHttp.WinHttpRequest: The data necessary to complete this operation is not yet available.

Ve bunun için herhangi bir işleyici yok. Böylece istisna Inno Setup tarafından yakalandı ve "Çalışma Zamanı Hatası" olarak görüntülendi.

+0

Sertifika hatası için istisna koşulundaki durum kodunu kullanabileceğim bir yol var mı? – yuval