0
我想在scala中使用最新的play framework打到GET
api請求。我認爲用於ws服務的用例在Play 2.5+中發生了變化。我正在使用以下代碼。在scala中最新的play framework 2.5.10中實現WS
class ApiResult @Inject() (ws: WSClient) {
def getApiResult(param1: String, param2: String)= {
var response = ws.url(s"ip-address/getApiResult/${param1}/${param2}").withRequestTimeout(5000.millis).get()
var i = 0
while(i < 2 && !response.isCompleted){
response = ws.url(s"ip-address/getSmsCredit/${param1}/${param2}").withRequestTimeout(5000.millis).get()
i += 1
}
val result = response.onComplete {
case Success(jsonOutput) =>
val x= (jsonOutput.json \ "x").getOrElse(Json.toJson(-1)).as[Double]
val y= (jsonOutput.json \ "y").getOrElse(Json.toJson(-1)).as[Double]
val z= (jsonOutput.json \ "z").getOrElse(Json.toJson(-1)).as[Double]
SomeCaseClass(x, y, z)
case _ =>
Logger.info("Error")
SomeCaseClass(0.00, 0.00, 0.00)
}
result
}
}
我想基本上返回SomeCaseClass,當我在其他函數中調用getApiResult。另外,如何在那裏調用這個函數,因爲這個函數使用參數WSClient
Hey Tomer,謝謝你的回答,實際上我提出了超過1個請求,以防萬一第一次請求超時。之前,我在初始化WSClient時遇到了問題,所以後來我在我的主控制器本身中注入了WSClient,而不是使用該WSClient初始化此類。比,它工作得很好。 –