2014-05-24 7 views
29

इसलिए मैंने स्टैक ओवरफ्लो और Google पर खोज परिणामों के पृष्ठों और पृष्ठों के माध्यम से ट्रैवल किया है और मैं संसाधन-बाधित, एम्बेडेड वातावरण के लिए उपयुक्त बहुत कम सी/सी ++ HTTP क्लाइंट लाइब्रेरीज़ में आया हूं (उदाहरण के लिए एक एआरएम)। हालांकि मैं डेस्कटॉप-क्लास अनुप्रयोगों के लिए उपयुक्त कुछ ऐसे में आया हूं।सी/सी ++ एंबेडेड प्रोजेक्ट्स के लिए HTTP क्लाइंट लाइब्रेरी

अनिवार्य रूप से, मैं HTTP GET, POST और HEAD कॉल करने के लिए एक सरल, उपयोग में आसान और सुविधाजनक API के बाद हूं (प्रमाणीकरण के लिए समर्थन के साथ, फिर से शुरू करने और पेलोड संपीड़न)। यह आदर्श होगा यदि उसके पास एक छोटा पदचिह्न था (यानी कोई या न्यूनतम बाह्य निर्भरता) और ओपन-सोर्स (अनुमोदित लाइसेंस के साथ) है।

यहाँ मैं भर में अब तक आए हैं की एक सूची है और क्यों वे उपयुक्त नहीं हैं -

  • curl - बहुत हैवीवेट
  • poco - बहुत हैवीवेट
  • neon - जीपीएल
  • qlibc - POSIX पुस्तकालयों पर निर्भर करता है
  • cpp-netlib - बूस्ट पुस्तकालयों पर निर्भर करता है
  • serf - अपाचे पोर्टेबल रनटाइम पुस्तकालय
  • urdl पर निर्भर करता है - बूस्ट पुस्तकालयों पर निर्भर करता है
  • HTTP Client C API - वादा किया लेकिन एक सी ++ आवरण

वहाँ किसी भी पुस्तकालयों वहाँ बाहर हैं कि मैं के बारे में पता कर रहा हूँ या हूँ की आवश्यकता है मैं अपने आप को रोलिंग से बेहतर है?

+1

एम्बेडेड और विवश उपकरणों के साथ मेरी HTTP ग्राहक अनुभव के दौरान, मैं अपने आप को द्वारा सी में एक सरल HTTP क्लाइंट लाइब्रेरी का विकास किया। उपरोक्त सभी समाधान हेवीवेट हैं या उनके पास बहुत अधिक निर्भरताएं हैं। पाओलो। – ppatierno

उत्तर

12

क्या आपने mbed पर HTTPClient पर एक नज़र डाली है? ऐसा लगता है कि कुछ साल पहले मूल के बहुत से फोर्क हैं जिन्हें बनाए रखा नहीं गया था। मैं इस का उपयोग नहीं किया ...

http://mbed.org/users/WiredHome/code/HTTPClient/

+0

यह आशाजनक लग रहा है! मैं कोशिश करूँगा, धन्यवाद! – thegreendroid

+0

यह निश्चित रूप से कुछ बदलावों के साथ प्रयोग योग्य है, धन्यवाद! – thegreendroid

+1

मैं इस तरह के कुछ के लिए चारों ओर घूम रहा था, और यह पता चला कि लेखक मेरे जैसा ही काम करता है ... – weberc2

1

मैं बस उन कार्यों के लिए उपयोग किए जाने वाले वर्णन का वर्णन कर सकता हूं।

कर्ल - यदि आप आलसी हैं, तो आप केवल बाइनरी में डाउनलोड कर सकते हैं और अधिक कुछ नहीं करने के लिए, इसमें बहुत ही सरल शीर्षलेख और कई उदाहरण हैं। आपको 3-4 पहले से ही निर्मित पुस्तकालयों और शीर्षलेख की आवश्यकता होगी। कोई बाहरी निर्भरता के साथ। तो, मैं इसे बहुत कम स्तर के रूप में गिनता हूं, लेकिन भारी वजन नहीं।

boost.asio - प्राप्ति के बहुत ही रोचक प्रतिमान, काफी आसान और साफ। लेकिन मैं कहूंगा कि यह निम्न स्तर भी है। तब कठिन कर्ल। और बूस्ट का उपयोग करने की आवश्यकता है, यह बाहरी निर्भरता है जिसे आप टालना चाहते हैं, मुझे लगता है।

पॉको - http सर्वर के लिए सबसे अच्छा समाधान। यह आपके स्तर पर शामिल होने के बाद उच्च स्तर है, आपको केवल कुछ वर्चुअल फ़ंक्शंस को लागू करने की आवश्यकता है, जिसमें अन्य सभी काम (और थ्रेड प्रबंधन) किए गए हैं। पोको एप्लिकेशन प्रबंधन, थ्रेड/प्रोसेस मैनेजमेंट के लिए बहुत सी चीजें देता है और यह बहुत आसान और आसान है, मैं यह भी कहूंगा कि इसमें जावा जैसी इंटरफ़ेस है। हां, बाहरी निर्भरता पॉको है, लेकिन मैं इसे संपूर्ण पुस्तकालय सीखने का मौका मानूंगा। फिर भी, http ग्राहकों के लिए यह वास्तव में भारी है।

यह HTTP के साथ मेरा सभी सी ++ अनुभव है। गिनती आपको केवल ग्राहक की आवश्यकता है और निर्भरताओं की आवश्यकता नहीं है, मैं आपको libcurl लाइब्रेरी देखने की पेशकश करता हूं। यह क्रॉस-प्लेटफॉर्म, आसान, कोई निर्भरता और कम-स्तर पर्याप्त है जो आपको नेटवर्क के साथ आवश्यक है। और यदि आपके पास समय होगा - पोको को देखो, वास्तव में, मेरा मानना ​​है कि आप इस पुस्तकालय के साथ प्यार में गिर जाएंगे जैसा मैंने किया था। आशा है कि यह सहायक होगा।

+0

उत्तर के लिए धन्यवाद! हालांकि, मैं इस परियोजना पर काम कर रहा हूं, इस पुस्तकालय वास्तव में बहुत भारी वजन वाले हैं, मैं बस इतनी विशाल पुस्तकालय में खींचने का औचित्य सिद्ध नहीं कर सकता। – thegreendroid

1

मैं एक और एक है, जो सिर्फ एक lib में पैक करने की आवश्यकता है पाया। परीक्षण नहीं किया, लेकिन हो सकता है एक नज़र लायक:

https://github.com/reagent/http.git

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