2012-07-17 12 views
7

मेरे डेस्कटॉप एप्लिकेशन में मैंने boost :: asio का उपयोग करके विभिन्न इंटरनेट संसाधनों तक पहुंच को जोड़ा। मैं बस http अनुरोध भेज रहा हूं (यानी टाइल सर्वर मैप करने के लिए) और परिणाम पढ़ें। मेरा कोड asio sync_client sample पर आधारित है।बढ़ावा देने के लिए प्रॉक्सी समर्थन कैसे जोड़ें :: asio?

अब मैं ग्राहकों को जो इन कार्यों का उपयोग करने में असमर्थ हैं के रूप में वे अपनी कंपनी में एक प्रॉक्सी चल रहे हैं से रिपोर्ट प्राप्त करें। एक वेब ब्राउज़र में वे अपने प्रॉक्सी का पता दर्ज कर सकते हैं और सबकुछ ठीक है। हमारा आवेदन डेटा डाउनलोड करने में असमर्थ है।

कैसे मैं अपने आवेदन करने के लिए इस तरह के समर्थन जोड़ सकते हैं?

+0

मुझे पता है बूस्ट नहीं था :: asio समर्थित 'HTTP'। क्या आपने इसे स्वयं लागू किया है? – ereOn

+0

ठीक है, शायद सभी http विशेषताएं नहीं - लिंक किए गए नमूने पर एक नज़र डालें। –

उत्तर

5

मैं इस सवाल का जवाब अपने आप को मिल गया। यह काफी सरल है:

http://www.jmarshall.com/easy/http/#proxies बहुत संक्षिप्त और स्पष्ट विवरण देता है कि http प्रॉक्सी कैसे काम करते हैं।

सभी मैं करना था asio sync_client नमूना नमूना के लिए निम्न कोड जोड़ने है:

std::string myProxyServer = ...; 
int   myProxyPort = ...; 

void doDownLoad(const std::string &in_server, const std::string &in_path, std::ostream &outstream) 
{ 
    std::string server  = in_server; 
    std::string path  = in_path; 
    char serice_port[255]; 
    strcpy(serice_port, "http"); 

    if(! myProxyServer.empty()) 
    { 
     path = "http://" + in_server + in_path; 
     server = myProxyServer; 
     if(myProxyPort != 0) 
      sprintf(serice_port, "%d", myProxyPort); 
    } 
    tcp::resolver resolver(io_service); 
    tcp::resolver::query query(server, serice_port); 

... 
2

ऐसा लगता है कि नमूना केवल क्या बूस्ट ASIO के लिए इस्तेमाल किया जा सकता का एक दिखावा है, लेकिन संभावना के रूप में प्रयोग की जाने वाली है इरादा नहीं है। आपको शायद एक पूर्ण लाइब्रेरी का उपयोग करना चाहिए जो न केवल HTTP प्रॉक्सी को नियंत्रित करता है, बल्कि HTTP रीडायरेक्ट, संपीड़न आदि भी करता है।

HTTP एक जटिल बात है: ऐसा करने के बिना, संभावना है कि आप एक और समस्या के साथ जल्द ही एक और ग्राहक से समाचार प्राप्त होगा।

मैंने पाया cppnetlib जो होनहार लग रहा है और बूस्ट ASIO पर आधारित है नहीं यकीन है कि यह हालांकि प्रॉक्सी संभालती है।

libcurl भी है लेकिन मुझे नहीं पता कि इसे आसानी से बूस्ट एएसआईओ के साथ एकीकृत किया जा सकता है या नहीं।

+0

अच्छा बिंदु, लेकिन मुझे अब तक रीडायरेक्ट या अप्रत्याशित फ़ाइल स्वरूप/संपीड़न को संभालने की आवश्यकता नहीं है। सबसे पहले मुझे प्रॉक्सी के लिए एक सीधा समाधान चाहिए। –

+0

@REDSOFTADAIR: सबसे आसान विचार मैं सोच सकता हूं [यह] (http://www.w3.org/Protocols/rfc2616/rfc2616.html) और मूल रूप से प्रॉक्सी समर्थन को लागू करना है। सौभाग्य से पर्याप्त, पार्सिंग HTTP शीर्षलेख मुश्किल नहीं है। – ereOn

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