Java 来自marklogic rest端点的二进制数据
我有MarkLogicREST端点,它返回大量数据。到目前为止,我正在使用String获取数据,但是有没有办法以二进制格式获取数据?如果您使用MarkLogic客户端Java API发出请求,您可以使用实现BinaryReadHandle接口的类之一访问响应,包括Java 来自marklogic rest端点的二进制数据,java,rest,spring-boot,marklogic,binary-data,Java,Rest,Spring Boot,Marklogic,Binary Data,我有MarkLogicREST端点,它返回大量数据。到目前为止,我正在使用String获取数据,但是有没有办法以二进制格式获取数据?如果您使用MarkLogic客户端Java API发出请求,您可以使用实现BinaryReadHandle接口的类之一访问响应,包括 BytesHandle获取内存中的二进制文件 InputStreamHandle以获取二进制文件作为输入流 FileHandle将二进制文件直接写入文件 有关这些类的详细信息,请遵循BinaryReadHandle中的链接: 希
- BytesHandle获取内存中的二进制文件
- InputStreamHandle以获取二进制文件作为输入流
- FileHandle将二进制文件直接写入文件
希望这能有所帮助,MarkLogic应该使用适当的内容类型头发送数据,这样您就可以使用任何适当的读取器来使用它 我猜你在谈论SpringRESTTemplate,我认为这更像是一个Spring问题,而不是MarkLogic问题。以下博文似乎表明您可以使用HttpMessageConverters连接其他格式的阅读器: 大概可以归结为:
public RestTemplate() {
this.messageConverters.add(new ByteArrayHttpMessageConverter());
//...
}
及
List>();
添加(新的bytearrayhtpmessageconverter());
RestTemplate RestTemplate=新的RestTemplate(messageConverters);
及
public void fetchFile()引发IOException{
RestTemplate RestTemplate=新RestTemplate();
restTemplate.getMessageConverters().add(
新的ByteArrayHttpMessageConverter());
HttpHeaders=新的HttpHeaders();
setAccept(Arrays.asList(MediaType.APPLICATION_OCTET_STREAM));
HttpEntity=新的HttpEntity(标题);
ResponseEntity response=restemplate.exchange(
"https://www.google.com/assets/images/srpr/logo11w.png",
HttpMethod.GET,实体,字节[]。类,“1”);
if(response.getStatusCode()==HttpStatus.OK){
//用它做点什么。。
}
}
(未经测试,仅从博客复制到此处供后人使用)
嗯 谢谢,但我使用的是marklogic rest端点,所以我使用的是rest模板。您使用的是什么rest模板?为了澄清,MarkLogic客户端Java API在MarkLogic REST API上执行请求。同意“客户端Java API在MarkLogic REST API上执行请求”,除此之外,我们可以直接从MarkLogic公开自定义REST端点。
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..
}
}