当前位置: 首页 > 知识库问答 >
问题:

播放框架REST API调用

秦楚
2023-03-14

我不熟悉这个框架,尝试使用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())
        );
    }

}

然后从控制器调用此代码:

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实例,也不知道之后会发生什么。非常感谢任何帮助。

谢谢。

共有2个答案

司寇高峯
2023-03-14

@rkj说得对:

inject@inject wsws;在控制器中,然后将ws-instance传递给

再加上一些小虫子,它成功了。谢谢

督宏旷
2023-03-14

或者,您可以使用Netflix提供的外挂库来创建Rest客户端。

 类似资料:
  • 而是使用EventStream而不是ArchivedEventStream,当我运行命令alert(通知)消息时,会转到除原始发件人之外的所有连接套接字,我也可以如何发送到原始发件人。 这是我的模型和控制器,使用WebSocket 事件模型 这是控制器

  • Rest服务器(Play Framework)中的相关问题在负载测试期间出现“读取超时”异常 java版本“1.8.0_31”java(TM)SE运行时环境(Build1.8.0_31-B13)java HotSpot(TM)64位服务器VM(Build25.31-B07,混合模式) 我正在我的本地PC中测试jmeter。我使用了2000个线程,出现了超时异常,并且Socket不知为什么没有关闭。

  • 在用400k记录查询MongoDb时,我得到了< code>OutOfMemoryError。我收集了大约40万条用户记录。当我试图检索所有用户(在弹性搜索中转储)时,我得到了< code>OutOfMemoryError错误。 我已经浏览过这个链接,在application.config中添加了jvm.memory=-Xms64m -Xmx1024m,但还是一样的异常。 这是我的堆栈跟踪 -

  • 你好,我是新来玩框架游戏的。在我的后端集群中,有基于SOAP的java Web服务在jetty服务器下运行。我正在使用play 2.1.2开发一个基于Web的应用程序,它应该调用在后端集群中运行的SOAP Web服务。 我在谷歌上搜索,找到了一些链接,但我看不出来http://playframework.wordpress.com/2010/08/15/web-services-using-pla

  • 问题内容: 我想知道(我的Java应用程序的)播放框架版本与我的应用程序的Java版本之间是否有任何联系? 示例:如果我使用play 2.2.1并在计算机上安装了java8。我可以在代码中使用java8吗? 如果有连接。java8的第一个播放版本是什么? 谢谢你妮芙 问题答案: Play 2.3.x是提及Java 8的第一个版本,请参见此处 今天早晨,我正在与我的一位同事交谈,他发现运行2.1.x

  • 这些是以下类别: 在控制器文件中,我有以下文件 列表getQuestion()中的size()引发LazyInitializationException,因为没有打开的会话 我知道,将fetch类型更改为EAGER或在QuestionRepository中的函数定义上方使用JPQL查询可能会解决这个问题,但在我的应用程序中,有些地方没有帮助,我需要延迟fetch。 如何使get问题()函数中的整个