Вы должны определить, что вам нужен ответ как массив byte[]
:
public byte[] getBackup(String databaseName) {
return client.toBlocking().retrieve(HttpRequest.GET("/backup/" + databaseName), byte[].class);
}
Затем вы можете преобразовать массив byte
в любой поток, который хотите.
Или вы можете используйте реактивный способ:
public Single<byte[]> getBackup(String databaseName) {
return client.retrieve(HttpRequest.GET("/backup/" + databaseName), byte[].class)
.collect(ByteArrayOutputStream::new, ByteArrayOutputStream::writeBytes)
.map(ByteArrayOutputStream::toByteArray);
}
Или вы можете определить декларативный клиент:
@Client("${agent.connection-url}")
public interface SomeControllerClient {
@Get(value = "/{databaseName}", processes = MediaType.APPLICATION_OCTET_STREAM)
Flowable<byte[]> getBackup(String databaseName);
}
И затем использовать его там, где вам нужно:
@Inject
SomeControllerClient client;
public void someMethod() {
client.getBackup("some-database")
.collect(ByteArrayOutputStream::new, ByteArrayOutputStream::writeBytes)
.map(ByteArrayOutputStream::toByteArray)
.otherStreamProcessing...
}