scala
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model.HttpRequest
import akka.http.scaladsl.model.HttpMethods._
import akka.stream.ActorMaterializer
import scala.concurrent.Future
import scala.util.{Failure, Success}
implicit val system = ActorSystem()
implicit val materializer = ActorMaterializer()
import system.dispatcher
val request = HttpRequest(GET, "https://api.example.com/data")
val responseFuture: Future[HttpResponse] = Http().singleRequest(request)
responseFuture
.onComplete {
case Success(response) => println(response)
case Failure(ex) => println(ex.getMessage)
}
scala
import javax.inject.Inject
import play.api.libs.ws._
import scala.concurrent.Future
import scala.util.{Failure, Success}
class MyHttpClient @Inject()(ws: WSClient) {
def postData(url: String, params: Map[String, String]): Future[WSResponse] = {
val request: WSRequest = ws.url(url)
val complexRequest: WSRequest =
request.withHttpHeaders("Content-Type" -> "application/json")
.withQueryStringParameters(params.toSeq: _*)
val futureResponse: Future[WSResponse] = complexRequest.post("Request Body")
futureResponse.onComplete {
case Success(response) => println(response)
case Failure(ex) => println(ex.getMessage)
}
futureResponse
}
}
scala
import dispatch._
import dispatch.Defaults._
val request = url("https://api.example.com/data").PUT
val complexRequest = request.setHeader("Content-Type", "text/plain").setBody("Request Body")
Http(complexRequest OK as.String)
.onComplete {
case Success(response) => println(response)
case Failure(ex) => println(ex.getMessage)
}