2016-03-17 3 views
6

मैं कुछ ऐसा करने की कोशिश कर रहा हूं जो सरल होना चाहिए: एक यूआरएल को एक अनुरोध प्राप्त करें। हालांकि, जब मैं इसे कैसे करना है इसके उदाहरणों की खोज करता हूं, तो मैं अक्सर this जैसे निकट-गंदे के साथ हवा में जाता हूं।मैं ओकैमल में एक सरल जीईटी अनुरोध कैसे करूं?

क्या कोई जानता है कि ओकैमल का उपयोग करके एक सरल HTTP अनुरोध कैसे करें? मैं कुछ हास्केल एक्सप के साथ एक ओकैमल नौसिखिया हूँ।

नोट:

न्यूनतम संभव स्तर OCaml का उपयोग कर आदर्श होगा समाधान। मैंने Cohttp लाइब्रेरी का उपयोग किया है, लेकिन मुझे मूल (?) HTTP ओकैमल लिब या उन पंक्तियों के साथ कुछ अधिक रुचि है।

@antron के जवाब में, सबसे कम संभव स्तर के मूल ओकैमल का उपयोग करने वाला समाधान बहुत सराहना की जाएगी। मुझे विश्वास है कि इसमें Unix लाइब्रेरी शामिल होगी। लेकिन अगर कोई दूसरा समाधान है जिसमें तीसरे पक्ष के पुस्तकालय शामिल नहीं हैं तो यह स्वागत के समान ही होगा।

+0

कोहट्प की सिफारिश करने के मेरे उत्तर पर टिप्पणी के अनुसार, ओकैमल में ऐसी कोई पुस्तकालय नहीं है। ओकैमल मानक पुस्तकालय बहुत ही कठिन है, और कई कार्यों के लिए समुदाय पुस्तकालयों का उपयोग करना आम है। यदि आप ओकैमल के साथ पैक की गई पुस्तकालयों की सूची देखना चाहते हैं, तो यह यहां है: http://caml.inria.fr/pub/docs/manual-ocaml/libref/index.html – antron

+0

यदि आप "न्यूनतम संभव स्तर" चाहते हैं ओकैमल में, जवाब सॉकेट होगा, (उदाहरण के लिए मानक मॉड्यूल 'यूनिक्स') और फिर यह * सरल * नहीं होगा। यदि आप कम स्तर चाहते हैं, तो कृपया अपने प्रश्न को स्पष्ट करें। – antron

+1

यह मेरे दिमाग को उड़ाता है कि स्टैक ओवरफ्लो डेवलपर सर्वेक्षण के रूप में अधिकांश डेवलपर्स के लिए कोई भी इस सवाल को कम करेगा, इसकी रोटी और मक्खन कोडिंग। @dopatraman मैं उत्पादक जल्दी प्राप्त करने के लिए http://hyegar.com/2015/10/20/so-youre-learning-ocaml/ पर भी एक नज़र डालने की सलाह देता हूं। –

उत्तर

5

कोहट्प लाइब्रेरी का उपयोग करें। Client example देखें।

प्रासंगिक लाइन है:

Cohttp_lwt_unix.Client.get (Uri.of_string "http://www.reddit.com/") 

यह आपको Lwt इकाई के अंदर (response, body) की एक जोड़ी देता है। response मूल रूप से एक रिकॉर्ड है, और body एक स्ट्रीम है। बाकी का उदाहरण सिर्फ उन लोगों के कुछ रोचक बिट्स प्रिंट कर रहा है।

+0

क्या आप जानते हैं कि निम्न स्तर कोड के साथ इसे कैसे किया जाए? क्या ओकैमल के लिए मूल 'एचटीपीपी लाइब्रेरी है? मैं इस भाषा को जमीन से सीखने की कोशिश कर रहा हूं। – dopatraman

+3

कोहट्प ओकैमल में मूल HTTP लाइब्रेरी के लिए एक उम्मीदवार है (दूसरा ओकैमलनेट है, जैसा कि आपने पोस्ट किए गए लिंक में)। यदि आप निम्न स्तर तक भी जाना चाहते हैं, तो आपको मॉड्यूल 'यूनिक्स' (या 'Lwt_unix' से सीधे सॉकेट का उपयोग करना होगा, यदि आप एक समवर्ती मोनैड का उपयोग करना चाहते हैं - समरूपता मोनड का एक और विकल्प Async लाइब्रेरी है)। OCaml द्वारा स्वयं को कोई मानक HTTP लाइब्रेरी नहीं है, लेकिन मुझे लगता है कि समुदाय वर्तमान में कोहट्प पर कम या ज्यादा बस गया है। – antron

0

ओकैमल में निम्न स्तर के यूनिक्स प्रोग्रामिंग के लिए (भले ही आप इसके बारे में ज्यादा नहीं जानते), मैं उत्कृष्ट पुस्तक Unix System Programming in OCaml की अनुशंसा करता हूं। यह आपको बताएगा कि आप जिस क्लाइंट को चाहते हैं उसे लिखना है।

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