Son*_*123 6 web-services scala playframework-2.0
我必须调用一个webservice,它给我一个二进制文件的内容.我只想将相同的内容返回给我的控制器的调用者:
val blobPromise = WS.url("http://url/to/webservice/file.txt").get()
Async {
blobPromise.map(f => Ok(f.body))
}
Run Code Online (Sandbox Code Playgroud)
这适用于文本文件,但二进制文件将被破坏.我在这做错了什么?(也许f.body是将Web服务的二进制结果编码为String?但是如何获取原始数据呢?)
我知道,对于大文件来说这不是一个好方法 - 我已经在Play文档中读到了有关Streaming HTTP响应的内容,但对于我来说,作为Play框架的初学者,这似乎很复杂.
您可以使用获取原始数据f.ahcResponse.gerResponseBodyAsBytes.但我认为,这会将整个响应加载到内存中,这是低效的.
您可以使用播放的流媒体功能!很容易提供这样的:
Async {
WS.url("http://url/to/webservice/file.txt").get().map(response => {
val asStream: InputStream = response.ahcResponse.getResponseBodyAsStream
Ok.stream(Enumerator.fromStream(asStream))
})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1949 次 |
| 最近记录: |