【发布时间】:2017-09-20 22:30:48
【问题描述】:
我正在使用 spring RestTemplate 下载文件。文件大小很小。
我想得到base64编码的字符串。但我看到 base64 编码的字符串被截断了它应该是什么。
这是我的代码
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(
new ByteArrayHttpMessageConverter());
StreamResourceReader reader = new StreamResourceReader();
restTemplate.execute(uri, HttpMethod.POST, null,
new StreamResponseExtractor(reader));
return reader.getEncodedString();
StreamResourceReader.java
public class StreamResourceReader {
private String encodeString;
public void read(InputStream content) {
try {
encodeString = Base64.encodeBase64String(IOUtils.toByteArray(content));
} catch (IOException e) {
throw new IllegalStateException(e);
}
}
public ByteArrayOutputStream getOutputStream(){
return outputStream;
}
public String getEncodedString() {
return encodeString;
}
}
StreamResponseExtractor.java
public class StreamResponseExtractor implements ResponseExtractor<InputStream> {
private StreamResourceReader reader;
public StreamResponseExtractor(StreamResourceReader resourceReader) {
this.reader=resourceReader;
}
@Override
public InputStream extractData(ClientHttpResponse response) throws IOException {
reader.read(response.getBody());
return null;
}
}
编辑 刚刚发现 inputStream 被截断了。我不知道为什么以及修复方法是什么。如有任何帮助,我们将不胜感激。
谢谢
【问题讨论】:
-
@SotiriosDelimanolis 有什么想法吗?
标签: spring-mvc spring-boot resttemplate