2016-02-09 4 views
6

मेरे आवेदन में मैं IdHTTP.Get का उपयोग कर रहा हूं। कोड का एक हिस्सा है:इंडी 10 - आईडीएचटीटीपी। उठाना "एसएसएल लाइब्रेरी लोड नहीं कर सका"

var 
    IdHTTP: TIdHTTP; 
begin 
    IdHTTP := TIdHTTP.Create(nil); 
    Output := IdHTTP.Get(url); 
    ... 
    IdHTTP.Free; 

IdHTTP.Version का उपयोग करते हुए मुझे संस्करण देता है: 10.6.2.5263

मैं here से OpenSSL डाउनलोड किया है, दोनों libeay32.dll और ssleay32.dll एक ही फ़ोल्डर में हैं मेरे आवेदन का

यह समस्या उत्पन्न हुई, क्योंकि मैं Windows 10 मुझे आशा है कि के साथ एक नया लैपटॉप का उपयोग कर रहा कोई मुझे बताओ कैसे इस समस्या को हल करने के लिए कर सकते हैं!

+3

डीएलएल लोड करने में विफल होने के लिए 'IdSSLOpenSSLHeaders' इकाई में इंडी के 'WhoFailedToLoad()' फ़ंक्शन का उपयोग करें। – whosrdaddy

+1

आउटगोइंग कनेक्शन – mjn

+1

@whosrdaddy धन्यवाद के लिए फ़ायरवॉल सेटिंग्स की जांच करें, ऐसा लगता है कि केवल libeay32.dll – Teun

उत्तर

2

यदि आपको https url तक पहुंचने की आवश्यकता है, तो आपको TidHTTP घटक के क्रैकियन को पूरा करने के लिए कुछ कोड जोड़ना होगा।

कुछ इस तरह का प्रयास करें उपयोग:

// create components 
HTTPs := Tidhttp.Create(nil); 
IdSSL := TIdSSLIOHandlerSocket.Create(nil); 
// try..finally for free 
try 
    // ini 
    HTTPs.ReadTimeout := 30000; 
    HTTPs.IOHandler := IdSSL; 
    IdSSL.SSLOptions.Method := sslvTLSv1; 
    IdSSL.SSLOptions.Method := sslvTLSv1; 
    IdSSL.SSLOptions.Mode := sslmUnassigned; 
    ... 

आप IdSSLOpenSSL को खंड का उपयोग करता है जोड़ने की जरूरत है।

+1

मैंने जो कोड उल्लेख किया है वह अतीत में मेरे लिए काम करता था और यह अभी भी मेरे द्वारा उपयोग किए जाने वाले अन्य कंप्यूटरों पर करता है। यह केवल मेरे नए लैपटॉप पर नहीं है। तो मुझे लगता है कि कोड समस्या नहीं है। – Teun

+2

देखें http://www.indyproject.org/sockets/blogs/ChangeLog/20141222.en.aspx, सरल उपयोग मामलों के लिए IOHandler निर्माण कोड की आवश्यकता नहीं है – mjn

संबंधित मुद्दे