rest api 이용하여 로컬폴더로 다운받는 테스트중인데요.
xml 텍스트를 영어로 날렸을때는 잘 되는데
한글로 날리면 mp3파일이 오긴 오는데 0초임다. ㅜ
@PostMapping(value = "/action")
public ResponseEntity<List<String>> makeVoice(@RequestBody TtsDTO dto) {
RestTemplate restTemplate = new RestTemplate();
String url = "https://kakaoi-newtone-openapi.kakao.com/v1/synthesize";
//String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+"<speak>" + dto.getContent() + "</speak>";
String xmlString = "<speak>" + dto.getContent() + "</speak>";
log.info("xml확인:" + xmlString);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_XML);
//headers.add("Content-Type","application/xml");
headers.add("charset", "UTF-8");
headers.add("Authorization", "KakaoAK 51b790b9e32597330a3825d667ef2c35");
byte[] response = restTemplate.postForObject(url, new HttpEntity<String>(xmlString, headers), byte[].class);
List<String> uploadPath = new ArrayList();
uploadPath.add(FileUtil.saveMp3(response, dto.getTitle()).replace("\\", "-") );
return new ResponseEntity<>(uploadPath, HttpStatus.OK);
}
인코딩문제인가 싶어서 아래와 같이 시도해봤지만 한글은 모두 안됐습니다. 영어와 숫자는 토종한국인 발음으로 잘 읽어줍니다.
1.
headers.add(“Content-Type”,“application/xml; charset=utf-8”); -> charset넣는 순간 접근자체가 안됨.
2. header의 content-type을 add와 set둘다 해봐도 안됨
3. 두가지 툴에서 테스트해봄. 툴의 인코딩 문제는 아닌듯 함.
4. String xmlString = “<?xml version=\"1.0\" encoding=\"UTF-8\"?>”+"" + 안녕하세요 + “”;
-> xml String서두에 인코딩 타입을 지정했음. 안됨.
개인 프로젝트중인데 머리가 너무 아픕니다.
도와주세요 ㅠㅠ