您好,我想从 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/