2015-09-24 20 views
11

के साथ मूल HTTP पोस्ट अनुरोध बनाने के लिए बेवकूफ तरीका मैं अक्का HTTP लाइब्रेरी के साथ मूल HTTP POST अनुरोध बनाने का तरीका जानने का प्रयास कर रहा हूं। यही वह है जिसके साथ मैं आया:अक्का HTTP

val formData = Await.result(Marshal(FormData(combinedParams)).to[RequestEntity], Duration.Inf) 
val r = HttpRequest(POST, url, headers, formData) 

बात यह है कि यह मेरे लिए थोड़ा गैर-मूर्खतापूर्ण प्रतीत होता है। क्या फॉर्मडाटा से एचटीपीईएनटीटी बनाने के अन्य तरीके हैं? विशेष रूप से तथ्य यह है कि मुझे Await का उपयोग करना होगा या डेटा को आसानी से उपलब्ध होने के बावजूद भविष्य को वापस करना होगा, इस तरह के एक साधारण कार्य के लिए अत्यधिक जटिल लगता है।

उत्तर

6

जाहिर है एक toEntity विधि से कुछ पर FormData वर्ग को जोड़ा गया है बिंदु। तो अब यह समस्या के सबसे सरल समाधान की तरह लगता है:

val formData = FormData(combinedParams).toEntity 
val r = HttpRequest(POST, url, headers, formData) 
17

आप इस तरह के हैं जिन्हें आप अनुरोध भेजने और प्रतिक्रिया unmarshall की जरूरत के रूप में अन्य फ्यूचर्स, साथ समझ के लिए एक में Marshal उपयोग कर सकते हैं:

val content = for { 
     request <- Marshal(formData).to[RequestEntity] 
     response <- Http().singleRequest(HttpRequest(method = HttpMethods.POST, uri = s"http://example.com/test", entity = request)) 
     entity <- Unmarshal(response.entity).to[String] 
     } yield entity 
+2

भविष्य के रूप में इसे बनाने के संस्करण को दिखाने के लिए अच्छा हो सकता है – Rob

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