11 Http 客户端
Ratpack 提供了自己的 HttpClient
,可用于进行远程 HTTP 调用。Ratpack 提供的 HttpClient
是一种完全非阻塞的客户端,是核心 Ratpack 库的一部分。就像 Ratpack 服务器一样,HttpClient
在底层也使用 Netty,并且实际上与 Netty 最佳实践一致,共享同一个 EventLoopGroup
。
1.11 基本 GET 请求
import ratpack.core.http.client.HttpClient;
import ratpack.test.embed.EmbeddedApp;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class Example {
public static void main(String... args) throws Exception {
try (EmbeddedApp remoteApp = EmbeddedApp.fromHandler(ctx -> ctx.render("Hello from remoteApp"))) {
EmbeddedApp.fromHandler(ctx -> ctx
.render(
ctx
.get(HttpClient.class)
.get(remoteApp.getAddress())
.map(response -> response.getBody().getText())
)
).test(httpClient ->
assertEquals("Hello from remoteApp", httpClient.getText())
);
}
}
}