gpt4 book ai didi

java - 如何使用 akka-http_2.12 v10.0.6 执行简单的 http 请求

转载 作者:行者123 更新时间:2023-12-02 02:50:30 25 4
gpt4 key购买 nike

我试图通过制作查询网址的简单示例来学习 akka。我试图使用 Akka HTTP 官方 docs 的示例,但“令人惊讶”的是官方文档已经过时了。

我试图利用this answer在 StackOverflow 上,但同样 - 它指的是过时的 API。

我的代码是:

import java.util.concurrent.CompletionStage;

import static akka.pattern.Patterns.pipe;

import akka.actor.AbstractActor;
import akka.http.javadsl.Http;
import akka.http.javadsl.model.HttpRequest;
import akka.http.javadsl.model.HttpResponse;
import akka.japi.pf.FI.UnitApply;
import akka.japi.pf.ReceiveBuilder;
import akka.stream.ActorMaterializer;
import akka.stream.Materializer;
import scala.concurrent.ExecutionContextExecutor;

public class RequestForPageActor extends AbstractActor {
final Http http = Http.get(context().system());
final ExecutionContextExecutor dispatcher = context().dispatcher();
final Materializer materializer = ActorMaterializer.create(context());

@Override
public Receive createReceive() {
return receiveBuilder().match(RequestForPage.class, onRequestForPage()).build();
// TODO: Handle page response
}

private UnitApply<RequestForPage> onRequestForPage() {
return request -> {
pipe(fetch(request.getUrl()), dispatcher).to(self());
};
}

CompletionStage<HttpResponse> fetch(String url) {
return http.singleRequest(HttpRequest.create(url), materializer);
}
}

问题是 API 已更改。现在编译器的提示是:The method pipe(Future<T>, ExecutionContext) in the type Patterns is not applicable for the arguments (CompletionStage<HttpResponse>, ExecutionContextExecutor)

问题:那么,我该如何执行这个查询 url 并处理结果的简单任务呢?

最佳答案

该文档并未过时。您只是导入了错误的静态方法。

替换

import static akka.pattern.Patterns.pipe;

import static akka.pattern.PatternsCS.pipe;

PatternsCS 包含一堆模式实现,它们与 CompletionStage 而不是 Future 一起使用。一些使用示例可以在这个docs page中找到。 .

关于java - 如何使用 akka-http_2.12 v10.0.6 执行简单的 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43921012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com