Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
423 views
in Technique[技术] by (71.8m points)

java - springboot RestTemplate call url and https response headers(content-type:audio/wav) ,how to save as *.wav file?

I use spring RestTemplate to call the the Third-party services,

ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class);

result like this:

forEntity status:200 headers: content-type=audio/wav body:"RIFF?,,,xxxxxxx......"

response is enter image description here the body seems to wav data, I want to save the data to wav file.

if I Go directly to the link in chrome, it's ok to play, and download.

question from:https://stackoverflow.com/questions/65884024/springboot-resttemplate-call-url-and-https-response-headerscontent-typeaudio-w

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Use RestTemplate.execute instead, which allows you to attach a ResponseExtractor, in which you have access to the response body which an InputStream, we take that InputStream and write it to a file

   restTemplate.execute(
            url, 
            HttpMethod.GET,
            request -> {}, 
            response -> {
                //get response body as inputstream
                InputStream in = response.getBody();
                //write inputstream to a local file
                Files.copy(in, Paths.get("C:/path/to/file.wav"), StandardCopyOption.REPLACE_EXISTING);
                return null;
            }
    );

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...