我是 Play 框架的新手,正在尝试使用 JavaWS 调用 RESTful API。我一直在为此苦苦挣扎。这是我目前所拥有的:
此代码基于 JavaWS 文档(我发现它很困惑),旨在发出请求。我认为它的工作原理是返回一个“ok”结果的完成阶段,该结果包含一个字符串,该字符串是将响应转换为文本的结果。
import javax.inject.Inject;
import com.fasterxml.jackson.databind.JsonNode;
import play.mvc.*;
import play.libs.ws.*;
import java.util.concurrent.*;
import static play.mvc.Results.ok;
public class MyClient implements WSBodyReadables, WSBodyWritables {
private final WSClient ws;
@Inject
public MyClient() {
this.ws = ws;
}
public CompletionStage<Result> index() {
return ws.url("http://example.com").get().thenApply(response ->
ok(response.asText())
);
}
}
然后从 Controller 调用此代码:
public Result call(){
MyClient client = new MyClient();
try {
return client.index()
.toCompletableFuture()
.get();
} catch(Exception e){
Logger.error("ah fuck");
}
return internalServerError();
}
我目前收到一条错误消息,提示“变量 ws 可能尚未初始化”,这是有道理的,因为我没有初始化 ws。我不知道如何正确初始化 WSClient 实例,我也不真正了解之后会发生什么。任何帮助将不胜感激。
谢谢。
最佳答案
或者,您可以使用 Netflix 的 Feign 库来创建 Rest 客户端。
关于java - Play Framework REST API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51344999/