How do i use play ws library in normal sbt project instead of play?

前端 未结 2 1329
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-02-02 16:32

When i tried using Play WS library in a normal sbt project instead of play project I was bound to use play.api.Play.current and got java.lang.RuntimeException:

相关标签:
2条回答
  • 2021-02-02 17:03

    Usage in 2.4.x

    import play.api.libs.ws.ning.NingWSClient   
    
    val wsClient = NingWSClient()
    wsClient.url("http://wwww.something.com").get()
    

    build.sbt :

    libraryDependencies += "com.typesafe.play" %% "play-ws" % "2.4.3"
    

    Usage in 2.5.x

    import play.api.libs.ws.ahc.AhcWSClient
    
    implicit val actorSystem = ActorSystem()
    implicit val materializer = ActorMaterializer()
    wsClient.url("http://wwww.something.com").get()
    
    //at the very end, to shutdown stuff cleanly :
    wsClient.close()
    actorSystem.terminate()
    

    build.sbt :

    libraryDependencies += "com.typesafe.play" %% "play-ws" % "2.5.4"
    

    Logs

    As someone noted in the comment, by default you might get a bunch of verbose logs coming from the underlying async-http-client. One way to fix it is to start configuring a logback.xml, and placing it in src/main/resources

    <configuration>
    
    <conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />
    
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!-- The logging pattern, you might want to adapt it -->
            <pattern>%d %coloredLevel %t - %logger - %message%n%xException</pattern>
        </encoder>
    </appender>
    
    <!-- Here you can change the levels of specific loggers -->
    <logger name="somelogger" level="INFO" />
    
    <!-- Default logging level for every logger -->
    <root level="ERROR">
        <appender-ref ref="STDOUT" />
    </root>
    
    </configuration>
    
    0 讨论(0)
  • 2021-02-02 17:08

    To use play-ws outside of play see "Using WSClient" section of documentation: http://www.playframework.com/documentation/2.3.x/ScalaWS

    val builder = new com.ning.http.client.AsyncHttpClientConfig.Builder()
    val client = new play.api.libs.ws.ning.NingWSClient(builder.build())
    val response = client.url(url).get()
    
    0 讨论(0)
提交回复
热议问题