java - 使用Java Play发送HTTP请求(WSClient初始化)

标签 java sockets playframework playframework-2.0

我从定义客户端类的官方 Play 2.6 文档中摘取了以下代码,

import javax.inject.Inject;
import play.libs.ws.*;
import java.time.Duration;
import java.time.temporal.ChronoUnit;
import java.util.concurrent.CompletionStage;

public class MyClient implements WSBodyReadables, WSBodyWritables {
    private WSClient ws;

    @Inject
    public MyClient(WSClient ws) {
        this.ws = ws;
        sendRequest();
    }

    public void sendRequest() {
        WSRequest request = ws.url("http://example.com");

        WSRequest complexRequest = request.addHeader("headerKey", "headerValue")
                .setRequestTimeout(Duration.of(1000, ChronoUnit.MILLIS))
                .addQueryParameter("paramKey", "paramValue");

        CompletionStage<? extends WSResponse> responsePromise = complexRequest.get();
    }
}

现在我有一个套接字参与者来处理传入的套接字消息。我想在每次有新消息通过套接字时触发 HTTP 请求。

我的问题是我不知道如何初始化 MyClient 类以使用其 sendRequest 方法。

public void onReceive(Object message) throws Exception {
    if (message instanceof String) {
        out.tell("I received your message: " + message, self());
        MyClient a = new MyClient(); //problem here
    }
}

最佳答案

您必须注入(inject)它,就像在 MyClass 中所做的那样:

public class MyActor extends UntypedAbstractActor {

    private MyClient client;

    @Inject
    public MyActor(MyClient client) {
        this.client = client;
    }

    @Override
    public void onReceive(Object message) throws Exception {
        client.sendRequest();
    }
}

如果存在一些问题不允许您使用此功能(例如您无法控制 Actor 的创建方式),请在您的问题中添加更多信息。

关于java - 使用Java Play发送HTTP请求(WSClient初始化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45032758/

相关文章:

java - 使用 Java 的 Playframeowk 抛出 JPA 事务失败。由: there is no started appliaction引起

java - 如何在我的 Ebean 实体中拥有正确的 JsonNode 字段?

java - public void actionPerformed(ActionEvent e) 中表达式的非法开始

Java 图像裁剪不准确

c++ - 连接c++服务器时,flash socket发送错误数据

sockets - 关闭套接字和关闭网络流之间的区别(System.Net.Sockets)

playframework - 在 Controller 中 Play Framework 消息

java - 使用 Spring 的 AnnoationSessionFactoryBean 时如何注册 Hibernate saveUpdate 监听器

java - Java中如何解析字符串?

java - 为什么客户端看不到服务器发送的第一条消息?