thư viện Theon của trông khá n Nước đá. Nhưng nếu bạn chỉ muốn có một phương thức mã hóa nhanh, tôi có cái này. Nó đề với các tham số tùy chọn, và cũng sẽ nhận ra JsValues từ spray-json và in gọn chúng trước khi mã hóa. (Những xảy ra được hai điều tôi phải lo lắng về, nhưng bạn có thể dễ dàng mở rộng khối phù hợp cho các trường hợp khác mà bạn muốn cung cấp cho xử lý đặc biệt để)
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("?", "&", "")
}
Có cách nào để sử dụng bên ngoài này phun? Nhìn vào nguồn có vẻ như nó khá giống với các phần phun khác. – Falmarri
Bạn chỉ cần mô-đun ['spray-http'] (http://spray.io/documentation/1.2.0/spray-http/) khá nhỏ. Nó chỉ chứa mô hình cho các yêu cầu và phản hồi HTTP. Nó không chứa bất kỳ mã máy chủ hoặc máy khách nào. – theon
@theon làm cách nào để sử dụng tính năng Định tuyến Phun này? Đây là mã của tôi yêu cầu val: HttpRequest = Nhận (api) đường ống val: Tương lai [SendReceive] = { cho { Http.HostConnectorInfo (connector, _) <- IO (Http)? Http.HostConnectorSetup (AppnexusSegmentService.AppnexusBaseUrl) } suất sendReceive (connector) } Await.result (pipeline.flatMap {client => client.apply (theo yêu cầu)}, 15.seconds) – Anand