对不起,但我是 Scala 的新手。我已经阅读了有关 Futures 和 Akka 的信息,但是我仍然在为我的方法返回字符串时遇到问题。
我有一个方法 getAuthString 应该返回身份验证字符串(或令牌)。我使用了喷雾 Jsonsupport,我可以打印结果
def getToken(url: String, username: String , password: String) = Future[String]{
import MyJsonProtocol._
import spray.httpx.SprayJsonSupport._
val pipeline: HttpRequest => Future[AuthTokenResult[Entry]] = (addCredentials(BasicHttpCredentials(username, password))
~> sendReceive
~> unmarshal[AuthTokenResult[Entry]]
)
val myfutureResponse: Future[AuthTokenResult[Entry]] = pipeline(Get(url))
myfutureResponse onComplete {
case Success(AuthTokenResult(Entry(Content(authString)):: _)) => println(authString)
case Failure(error) => println("An error has occured: " + error.getMessage)
}
这将解组 json 并打印所需的 authString。但是,印刷对我没有好处。我知道 onComplete 返回单位。我想返回 authString 以便我可以在其他地方使用它来处理另一个请求。我想我将不得不使用平面地图或地图,但我不确定如何。我需要我的方法来返回 authString 或错误。