java - Play Framework : How can I read a png image using the WS client?

标签 java image playframework png playframework-2.0

您好,我想从 Web 服务读取 PNG,然后使用 PNG 响应客户端。 (想想像图像代理之类的东西)。我在 WS 类中使用 Java 和 Play Framework 2.0。

目前我有:

public static Result getimage(){

  WSRequestHolder requestHolder = WS.url("http://someimageserver/myimage.png");
  Promise<WS.Response> getImageResult = requestHolder.get();
  //How do I create an play.mvc.Result from this so I can sent it back to the callee?

}

非常感谢任何帮助。

最佳答案

在 Play 2.0.4 中,您无法在 Java 中执行此操作。首先,API 中没有二进制文件的方法:http://www.playframework.org/documentation/api/2.0.4/java/play/libs/WS.Response.html .我尝试了 WS.Response.getBody() 方法,但字节不正确。

但是 Scala API 在 Play 2.0.4 中支持二进制文件:

package controllers

import play.api._
import libs.ws.WS
import play.api.mvc._

object Application extends Controller {

  def getImage = Action {
    Async {
      WS.url("http://someimageserver/myimage.png").get().map { r =>
        Ok(r.getAHCResponse.getResponseBodyAsBytes).as("image/png")
      }
    }
  }

}

从 Play 2.1 开始支持 Java 中的二进制文件:https://github.com/playframework/Play20/blob/master/framework/src/play-java/src/main/java/play/libs/WS.java#L565

关于java - Play Framework : How can I read a png image using the WS client?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13776747/

相关文章:

javascript - 使用单选按钮更改图像

linux - Play2 IntelliJ 导致 akka.stream.BindFailedException$ : bind failed on Linux

java - 有关在 Play 2.2.1 上安装 Deadbolt 的问题

backbone.js - 保护 Play 的 REST API

java - 了解特定的 UTC 时间格式 YYYY-MM-DDTHH :MM:SS. SSSZ

java - 向现有 mongo 数组添加新值

java - 动态加载的 pojo 类的 Jackson 反序列化/TypeReference

c++ - 是否有任何 C++ 库可以从 Windows 文件夹中的 thumb.db 读取缩略图?

java - 正则表达式匹配括号之间的任何内容

php - 显示 mysql 表引用的目录中的图像