biblioteka Theon wygląda całkiem n lód. Ale jeśli chcesz po prostu metodę kodowania szybkiego, mam to. Zajmuje się parametrami opcjonalnymi, a także rozpoznaje parametry JsValues z spray-json i kompaktowe je wydrukuje przed kodowaniem. (Ci, zdarzyć się dwie rzeczy muszę się martwić, ale można łatwo rozszerzyć blok dopasowania dla pozostałych przypadkach chcesz dać do specjalnego traktowania)
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("?", "&", "")
}
Czy istnieje sposób, aby korzystać z tej poza sprayu? Patrząc na źródło wydaje się, że jest dość sprzężony z innymi częściami sprayu. – Falmarri
Będziesz potrzebował tylko bardzo małego modułu ['spray-http'] (http://spray.io/documentation/1.2.0/spray-http/). Zawiera tylko model dla żądań HTTP i odpowiedzi. Nie zawiera żadnego kodu serwera ani klienta. – theon
@theon jak korzystać z tego Routing Spray? Oto mój kod żądania val: HttpRequest = get (API) val rurociąg: Przyszłość [SendReceive] = {{ dla Http.HostConnectorInfo (złącza, _) <- IO (HTTP)? Http.HostConnectorSetup (AppnexusSegmentService.AppnexusBaseUrl) } wydajność sendReceive (łącznik) } Await.result (pipeline.flatMap {klienta => client.apply (wniosek)} 15.seconds) – Anand