Akka HTTP поставляется с API-интерфейсом клиента, и, как и все, что поддерживается с помощью Typesafe, мы также предоставили Java API для него. Documentation for the client side API is available online.
Там есть ряд различных API, чтобы выбрать из, прочитайте вышеуказанную документацию, но самым простым является singleRequest
:
// valid for Akka Http 1.0 (experimental), APIs may change slightly still
final ActorSystem system = ActorSystem.create();
final ActorMaterializer materializer = ActorMaterializer.create(system);
final Future<HttpResponse> responseFuture =
Http.get(system)
.singleRequest(HttpRequest.create("http://akka.io"), materializer);
Akka HTTP не поддерживает TLS/SSL. Одна вещь, которая отличается от Play's WS, заключается в том, что она более низкая, и дает вам больше контроля над тем, как/когда/что. WS проще в использовании, а также асинхронно. Akka HTTP способен поток тело ответа, тогда как WS и некоторые другие HTTP-клиенты не могут этого сделать. Потоки достигаются с использованием Akka Streams, получая поток тела ответа: response.entity().getResponseBytes()
, который является Source<ByteString, ?>
.
Любая клиентская часть Play или клиентская часть Akka HTTP должны делать все, что вам нужно, выбирать, что больше подходит вашему прецеденту. Если вам нужна потоковая передача - Akka, если вам нужны очень простые вещи - играйте.
Последующие действия, если вы делаете Http-запросы от актера и хотите, чтобы ответы возвращались в виде сообщений. Вы можете использовать шаблон pipeTo к трубе Future
обратно в Actor
следующим образом:
import static akka.pattern.Patterns.pipe;
// ...
Future<HttpResponse> response = Http.get(system)
.singleRequest(HttpRequest.create("http://akka.io"), materializer);
pipe(response, context.dispatcher()).to(self);
Этот пример больше походит для использования снаружи системы актера. Если я хочу сделать HTTP-запрос от актера, могу ли я получить ответ как сообщение в очереди актера? – George
Конечно, просто используйте шаблон 'pipeTo', чтобы вернуть« Будущее »в виде сообщения, я обновлю ответ выше. –
Я добавил документацию (полный пример) для использования HTTP-клиента в Актерах в документации, вот PR: https://github.com/akka/akka/pull/18611 Счастливый hakking! –