簡體   English   中英

播放框架將播放服務器的http請求發送到“somesite.com”並將響應發送回瀏覽器

[英]Play framework make http request from play server to “somesite.com” and send the response back to the browser

我正在使用scala中的Play框架開發一個應用程序。 我必須在我的應用程序中處理以下用例。

對於從瀏覽器到播放服務器的特定請求,Play服務器應向某個外部服務器發出http請求(例如:some:somesite.com),並將該請求的響應發送回Web瀏覽器。

我編寫了以下代碼,將請求發送到控制器中的外部設備。

val holder = WS.url("http://somesite.com")
val futureResponse = holder.get

現在我如何將收到的“somesite.com”的回復發回給瀏覽器?

WS中的Play文檔中有一個示例,在控制器中使用 ; 我已根據您的情況調整了它:

def showSomeSiteContent = Action.async {
  WS.url("http://somesite.com").get().map { response =>
    Ok(response.body)
  }
}

需要注意的關鍵是從get調用中獲取的Futuremap()的慣用方法 - 一旦Future成功完成,這個map塊中的代碼將被執行。

Action.async “包裝器”告訴Play框架您將返回Future[Response]並且您希望執行必要的等待事情發生,如處理異步結果文檔中所述

您可能還有興趣動態返回狀態和內容類型:

def showSomeSiteContent = Action.async {
  WS.url("http://somesite.com").get().map { response =>
    Status(response.status)(response.body).as(response.ahcResponse.getContentType)
  }
}
  • 如果您調用的URL /服務無法正確回答,則動態狀態可能會有所幫助。
  • 如果您的URL /服務可以返回不同的內容HTML / XML,則動態內容類型可以很方便...取決於某些動態參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM