ОБНОВЛЕНО: Метод возвращает тип ЛЮБОЙ, а не тип Future [строка].Требовать возврата типа String.
Я делаю http-запрос с использованием библиотеки play.ws 2.6.Ранее это было сделано с помощью запроса curl, но при этом используется только базовая аутентификация.
Ниже приведен мой код, и я пытаюсь вернуть строку json из этой функции для десериализации в другом методе.
import java.io.{File, InputStream}
import java.nio.file.Paths
import javax.inject._
import org.apache.commons.io.FileUtils
import play.api._
import play.api.http.HttpEntity
import play.api.libs.ws._
import play.api.mvc._
import play.api.Play.current
import scala.collection.mutable.ListBuffer
import scala.concurrent.Await
import scala.concurrent.duration._
import scala.concurrent.ExecutionContext
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future
import sys.process._
@Singleton
class BuildService @Inject() (
ws: WSClient,
ec: ExecutionContext,
config: Configuration) {
def bbApiRequest(requestUrl: String, timeout: FiniteDuration):
Future[String] = {
val request = ws
.url(requestUrl)
.withAuth(
"user",
"pw1234",
WSAuthScheme.BASIC)
.get()
Await.result(request, timeout)
val returner = request.map(_.json)
} // <-- line 72 in below error points here.
}
При запуске выдает ошибку:
[error] C:\my_path\app\services\BuildService.scala:72: type mismatch;
[error] found : Unit
[error] required: scala.concurrent.Future[String]
[error] }
[error] ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
[info] Compiling 1 Scala source to C:\my_path\restapi\target\scala-
2.12\classes...
[error] C:\my_path\restapi\app\services\BuildService.scala:72: type
mismatch;
[error] found : Unit
[error] required: scala.concurrent.Future[String]
[error] }
[error] ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
Я пытаюсь получить в идеале:
- Строка возврата (case case и jsonметод для распаковки строки)
- Синхронный запрос (если асинхронный, мне нужно подождать, чтобы завершить выполнение приложения)
- Безопасный (позволяет использовать токены для проверки)
Ценю любую помощь!