문의 시, 사용하시는 개발환경과 디벨로퍼스 앱ID를 알려주세요.
안녕하세요 앱 아이디: 1109822 입니다
나에게 메세지 보내기 기능을 테스트 하고 있습니다.
@Slf4j
@RequiredArgsConstructor
@Configuration
public class OpenFeignConfig {
private final RedisTemplate<String ,String> redisTemplate;
@Bean
public RequestInterceptor requestInterceptor() {
return requestTemplate -> {
requestTemplate.header("Authorization", redisTemplate.opsForValue().get("kakao_access"));
requestTemplate.header("Content-Type", "application/x-www-form-urlencoded");
};
}
@FeignClient(
name = "KakaoMessage",
url = "https://kapi.kakao.com/v2/api/talk/memo/default/send",
configuration = OpenFeignConfig.class
)
public interface KakaoMessage {
@PostMapping
void sendMessage(@RequestBody Object template_object);
}
@Override
// @Scheduled(cron = "0 51 9 * * ?")
public void messageSetting() {
MessageDto msg = new MessageDto();
msg.setMessage("테스트입니다.");
JSONObject templateObj = new JSONObject();
templateObj.put("object_type", "text");
templateObj.put("text", msg.getMessage());
templateObj.put("link", "www.naver.com");
templateObj.put("button_title", "test btn");
MultiValueMap<String, Object> parameters = new LinkedMultiValueMap<>();
parameters.add("template_object", templateObj.toString());
log.info("요청 보내기 시작!");
log.info(parameters.toString());
kakaoMessage.sendMessage(parameters);
log.info("메세지 보내기 요청!~!");
}
메세지 요청을 보내는 코드는 위와 같고 헤더에 토큰, 콘텐츠 타입 모두 래퍼런스와 같이 지정해줬습니다 허나 요청을 보내면
{"msg":"failed to parse parameter. name=template_object, stringToParse=-, paramString=-, paramStringAlias=null","code":-2}
이런 에러가 발생됩니다. openFeign 로그로 request를 보면
---> POST https://kapi.kakao.com/v2/api/talk/memo/default/send HTTP/1.1
Authorization: Bearer ${access-token}
Content-Length: 202
Content-Type: application/x-www-form-urlencoded
template_object=%7B%22object_type%22%3A%22text%22%2C%22link%22%3A%22www.naver.com%22%2C%22text%22%3A%22%ED%85%8C%EC%8A%A4%ED%8A%B8%EC%9E%85%EB%8B%88%EB%8B%A4.%22%2C%22button_title%22%3A%22test+btn%22%7D
---> END HTTP (202-byte body)
형식대로 잘 들어가고 있는거 같은데, 뭐가 문제일까요?