java - Play Framework REST API 调用

标签 java api http playframework java-ws

我是 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/

相关文章:

asp.net - 使用asp.net HTTPHandler实现自己的代码然后调用它的默认实现?

java 几种类型的有界泛型类型定义

java - 流过空集合,添加值

python - 使用图形 API 编写代码

php - YouTube Api : snippet. live_chat_id 是必需的

c# - Http无法向服务器发送消息

java - 字符连接产生数字输出

Java OpenGL 屏幕大小的纹理映射四边形

rest - 为什么在简单的 API Controller 中不允许使用 DELETE 方法

java - 为什么 dispatch 会针对特定 URL 抛出 "java.net.ConnectException: General SSLEngine ..."和 "unexpected status"异常?