थियोन के पुस्तकालय लग रहा है सुंदर n बर्फ। लेकिन अगर आप सिर्फ एक क्विक एन्कोड विधि चाहते हैं, तो मेरे पास यह है। यह वैकल्पिक पैरामीटर से संबंधित है, और spray-json से JsValues को भी पहचान लेगा और एन्कोडिंग से पहले कॉम्पैक्ट प्रिंट करेगा। (उन दो बातें मैं के बारे में चिंता करने की ज़रूरत होने के लिए होता है, लेकिन आप आसानी से आप के लिए विशेष हैंडलिंग देना चाहता हूँ अन्य मामलों के लिए मैच ब्लॉक का विस्तार कर सकता है)
import java.net.URLEncoder
def buildEncodedQueryString(params: Map[String, Any]): String = {
val encoded = for {
(name, value) <- params if value != None
encodedValue = value match {
case Some(x:JsValue) => URLEncoder.encode(x.compactPrint, "UTF8")
case x:JsValue => URLEncoder.encode(x.compactPrint, "UTF8")
case Some(x) => URLEncoder.encode(x.toString, "UTF8")
case x => URLEncoder.encode(x.toString, "UTF8")
}
} yield name + "=" + encodedValue
encoded.mkString("?", "&", "")
}
वहाँ स्प्रे के इस बाहर का उपयोग करने के लिए एक रास्ता है? स्रोत को देखते हुए ऐसा लगता है कि यह स्प्रे के अन्य हिस्सों में काफी सुंदर है। – Falmarri
आपको केवल ['स्प्रे-http'] (http://spray.io/documentation/1.2.0/spray-http/) मॉड्यूल की आवश्यकता होगी जो बहुत छोटा है। इसमें केवल HTTP अनुरोधों और प्रतिक्रियाओं के लिए मॉडल शामिल है। इसमें कोई सर्वर या क्लाइंट कोड नहीं है। – theon
@theon हम इस स्प्रे रूटिंग का उपयोग कैसे करते हैं? यहाँ मेरी कोड वैल अनुरोध है: HttpRequest = प्राप्त करें (एपीआई) वैल पाइपलाइन: भविष्य [SendReceive] = { के लिए { Http.HostConnectorInfo (कनेक्टर, _) <- आईओ (HTTP)? Http.HostConnectorSetup (AppnexusSegmentService.AppnexusBaseUrl) } उपज sendReceive (कनेक्टर) } Await.result (pipeline.flatMap {ग्राहक => client.apply (अनुरोध)}, 15.seconds) – Anand