안녕하세요, 사내시스템개발팀에서 사용하는 공통 API 서비스를 통해
API 통신을 시도하는 중 계속 500에러를 발생하는 오류가 있어
원인을 알고 싶어 소스 보내드립니다.
///// 오류 출력 내용
java.io.IOException: Server returned HTTP response code: 500 for URL: https://dev-api.kakaoent.io/api/v1/mail/send_for_file
String searchUrlStr = “https://dev-api.kakaoent.io/api/v1/mail/send_for_file”;
String contentType = “multipart/form-data;boundary=”+BOUNDARY";
//전송할 서버 url
URL searchUrl = new URL(searchUrlStr); // 메일 전송 api
connection = (HttpsURLConnection)searchUrl.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setRequestMethod(“POST”);
connection.setRequestProperty(“Connection”, “Keep-Alive”);
connection.setRequestProperty(“Content-Type”, contentType);
connection.setRequestProperty(“x-api-key”, EgovProperties.getInstance().getProperty(“kakaoKey”));
connection.setRequestProperty(“Cache-Control”, “no-cache”);
dos = new DataOutputStream(connection.getOutputStream());
osw = new OutputStreamWriter(connection.getOutputStream(), “UTF-8”);
// 데이터 통신
addTextPart(“subject”, subject);
addTextPart(“content”, content);
addTextPart(“from_name”, fromName);
addTextPart(“to_email”, toEmail);
//addTextPart(“cc_email”, ccEmail);
//addTextPart(“bcc_email”, bccEmail);
for(MultipartFile file : files) {
addFilePart(“files”, file);
}
dos.close();
osw.close();
InputStreamReader in = new InputStreamReader(connection.getInputStream(),“utf-8”);
BufferedReader br = new BufferedReader(in);
String strLine;
while ((strLine = br.readLine()) != null){
returnString = returnString.concat(strLine);
}
//결과값
return returnString;
////////// (함수)
public void addTextPart(String name, String value) throws IOException {
osw.write(TWO_HYPHENS + BOUNDARY + CRLF);
osw.write("Content-Disposition: form-data; name=\""+name+"\""+CRLF);
osw.write(CRLF);
osw.write(value+CRLF);
osw.flush();
}
public void addFilePart(String name, MultipartFile file) throws IOException {
String fileName = file.getOriginalFilename();
File originalFile = new File(file.getOriginalFilename());
file.transferTo(originalFile);
dos.writeBytes(TWO_HYPHENS + BOUNDARY + CRLF);
dos.writeBytes("Content-Disposition: form-data; name=\"" + name + "\";" + " filename=@\"" + originalFile.getAbsolutePath() + "\"" + CRLF);
dos.writeBytes(CRLF);
InputStream fis = new FileInputStream(originalFile);
bytesAvailable = fis.available();
bufferSize = Math.min(bytesAvailable, MAX_BUFFER_SIZE);
buffer = new byte[bufferSize];
bytesRead = fis.read(buffer, 0, bufferSize);
while (bytesRead > 0) {
dos.write(buffer, 0, bufferSize);
bytesAvailable = fis.available();
bufferSize = Math.min(bytesAvailable, MAX_BUFFER_SIZE);
bytesRead = fis.read(buffer, 0, bufferSize);
}
dos.writeBytes(CRLF);
dos.writeBytes(TWO_HYPHENS + BOUNDARY + TWO_HYPHENS + CRLF);
dos.flush();
}