我有marklogic rest端点,该端点正在返回大量数据。到目前为止,我正在使用String来获取该数据,但是有没有办法以二进制格式获取它?
答案 0 :(得分:0)
如果您使用MarkLogic Client Java API发出请求,则可以使用实现BinaryReadHandle接口的类之一来访问响应,包括
有关这些类的更多信息,请访问BinaryReadHandle中的链接:
http://docs.marklogic.com/javadoc/client/com/marklogic/client/io/marker/BinaryReadHandle.html
希望有帮助,
答案 1 :(得分:0)
MarkLogic应该使用适当的内容类型标头发送数据,因此您应该能够使用任何适当的读取器使用它。
猜想您在谈论Spring RestTemplate,我认为这不是MarkLogic而是Spring的问题。以下博客文章似乎表明您可以使用HttpMessageConverters来连接其他格式的阅读器:
https://www.leveluplunch.com/java/tutorials/038-retrieve-file-spring-resttemplate/
大概可以归结为:
public RestTemplate() {
this.messageConverters.add(new ByteArrayHttpMessageConverter());
//...
}
和
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
messageConverters.add(new ByteArrayHttpMessageConverter());
RestTemplate restTemplate = new RestTemplate(messageConverters);
和
public void fetchFile() throws IOException {
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(
new ByteArrayHttpMessageConverter());
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_OCTET_STREAM));
HttpEntity<String> entity = new HttpEntity<String>(headers);
ResponseEntity<byte[]> response = restTemplate.exchange(
"https://www.google.com/assets/images/srpr/logo11w.png",
HttpMethod.GET, entity, byte[].class, "1");
if (response.getStatusCode() == HttpStatus.OK) {
// Do something with it..
}
}
(未经测试,只是从博客复制到此处以供后代使用)
HTH!