HTTP client abstraction for LangChain4j with synchronous/asynchronous execution and Server-Sent Events (SSE) streaming support
import dev.langchain4j.http.client.*;
import java.time.Duration;
// Load HTTP client via SPI
HttpClient client = HttpClientBuilderLoader.loadHttpClientBuilder()
.connectTimeout(Duration.ofSeconds(10))
.readTimeout(Duration.ofSeconds(30))
.build();
// Build and execute request
HttpRequest request = HttpRequest.builder()
.method(HttpMethod.GET)
.url("https://api.example.com/data")
.addHeader("Accept", "application/json")
.build();
SuccessfulHttpResponse response = client.execute(request);
System.out.println("Status: " + response.statusCode());
System.out.println("Body: " + response.body());HttpRequest request = HttpRequest.builder()
.method(HttpMethod.POST)
.url("https://api.example.com/users")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer token123")
.body("{\"name\":\"Alice\",\"email\":\"alice@example.com\"}")
.build();
SuccessfulHttpResponse response = client.execute(request);HttpRequest request = HttpRequest.builder()
.method(HttpMethod.GET)
.url("https://api.example.com/search")
.addQueryParam("q", "search term")
.addQueryParam("limit", "10")
.build();
// URL becomes: https://api.example.com/search?q=search+term&limit=10import dev.langchain4j.http.client.sse.*;
HttpRequest request = HttpRequest.builder()
.method(HttpMethod.POST)
.url("https://api.example.com/stream")
.addHeader("Accept", "text/event-stream")
.body("{\"prompt\":\"Hello\"}")
.build();
client.execute(request, new ServerSentEventListener() {
@Override
public void onEvent(ServerSentEvent event) {
System.out.println("Data: " + event.data());
}
@Override
public void onError(Throwable throwable) {
System.err.println("Error: " + throwable.getMessage());
}
@Override
public void onClose() {
System.out.println("Stream closed");
}
});import dev.langchain4j.exception.HttpException;
try {
SuccessfulHttpResponse response = client.execute(request);
System.out.println("Success: " + response.body());
} catch (HttpException e) {
// 4XX or 5XX status codes
System.err.println("HTTP error: " + e.getMessage());
} catch (RuntimeException e) {
// Network errors, timeouts
System.err.println("Request failed: " + e.getMessage());
}Install with Tessl CLI
npx tessl i tessl/maven-dev-langchain4j--langchain4j-http-client@1.11.0