์Šคํ”„๋ง

[์Šคํ”„๋ง] ๊ณต๊ณต๋ฐ์ดํ„ฐ SERVICE_KEY_IS_NOT_REGISTERED_ERROR ํ•ด๊ฒฐ

HHRR 2024. 1. 18. 18:04

์˜ค๋ฅ˜

์Šคํ”„๋ง์œผ๋กœ ๊ตญํ† ๋ถ€ ๊ฑด์ถ•๋ฌผ๋Œ€์žฅ์ •๋ณด Open Api๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š”๋ฐ ์—๋Ÿฌ๋ฅผ ๋งˆ์ฃผํ–ˆ๋‹ค.

์ธ์ฝ”๋”ฉ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ธŒ๋ผ์šฐ์ €์—์„œ api ํ˜ธ์ถœํ•˜๋ฉด ์ž˜ ๋ถˆ๋Ÿฌ์™€์ง€๋Š”๋ฐ, ์Šคํ”„๋ง์—์„œ ํ˜ธ์ถœํ•˜๋ฉด SERVICE_KEY_IS_NOT_REGISTERED_ERROR ์—๋Ÿฌ๊ฐ€ ๋–ด๋‹ค.

<OpenAPI_ServiceResponse>
	<cmmMsgHeader>
		<errMsg>SERVICE ERROR</errMsg>
		<returnAuthMsg>SERVICE_KEY_IS_NOT_REGISTERED_ERROR</returnAuthMsg>
		<returnReasonCode>30</returnReasonCode>
	</cmmMsgHeader>
</OpenAPI_ServiceResponse>

ํ•ด๊ฒฐ์ฑ…

1. ์„œ๋น„์Šคํ‚ค๋ฅผ ๋””์ฝ”๋”ฉํ‚ค๋กœ ์„ค์ • ํ›„์— URLEncoder๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ ํŒŒ๋ผ๋ฏธํ„ฐ๋ž‘ ์„œ๋น„์Šคํ‚ค๋ฅผ ์ธ์ฝ”๋”ฉํ•ด์คฌ๋‹ค

์ธ์ฝ”๋”ฉ ๋””์ฝ”๋”ฉ์„ ์ž˜ํ•˜์ž..

// ๊ฐ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ URLEncoder๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฝ”๋”ฉ
String encodedSigunguCd = URLEncoder.encode(sigunguCd, StandardCharsets.UTF_8.toString());
String encodedBjdongCd = URLEncoder.encode(bjdongCd, StandardCharsets.UTF_8.toString());
String encodedServiceKey = URLEncoder.encode(serviceKey, StandardCharsets.UTF_8.toString());

2. ์ด์ „์—๋Š” String์œผ๋กœ uri ์ง€์ •ํ•ด์คฌ๋Š”๋ฐ URI ๊ฐ์ฒด๋กœ ์ƒ์„ฑํ•ด์คฌ๋‹ค.

// URI ์ƒ์„ฑ (๊ฐ์ฒด๋กœ ์ƒ์„ฑํ•ด์ค˜์•ผํ•จ!!!!)
URI uri = URI.create(String.format("%s?sigunguCd=%s&bjdongCd=%s&ServiceKey=%s&_type=json",
        url, encodedSigunguCd, encodedBjdongCd, encodedServiceKey));

3. ๋งˆ์ง€๋ง‰์œผ๋กœ WebClient ํ˜ธ์ถœํ•ด์ฃผ๊ธฐ

// WebClient ํ˜ธ์ถœ
String responseBody = webClient.get()
        .uri(uri)
        .retrieve()
        .bodyToMono(String.class)
        .block();

์ „์ฒด์ฝ”๋“œ

@GetMapping("/api/{sigunguCd}/{bjdongCd}")
    public String callApi(@PathVariable("sigunguCd") String sigunguCd,
                          @PathVariable("bjdongCd") String bjdongCd) throws IOException {

        StringBuilder returnAll = new StringBuilder();
        String url = "http://apis.data.go.kr/1613000/BldRgstService_v2/getBrBasisOulnInfo";

        // ๊ฐ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ URLEncoder๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฝ”๋”ฉ
        String encodedSigunguCd = URLEncoder.encode(sigunguCd, StandardCharsets.UTF_8.toString());
        String encodedBjdongCd = URLEncoder.encode(bjdongCd, StandardCharsets.UTF_8.toString());
        String encodedServiceKey = URLEncoder.encode(serviceKey, StandardCharsets.UTF_8.toString());

        // URI ์ƒ์„ฑ (๊ฐ์ฒด๋กœ ์ƒ์„ฑํ•ด์ค˜์•ผํ•จ!!!!)
        URI uri = URI.create(String.format("%s?sigunguCd=%s&bjdongCd=%s&ServiceKey=%s&_type=json",
                url, encodedSigunguCd, encodedBjdongCd, encodedServiceKey));

        // WebClient ํ˜ธ์ถœ
        String responseBody = webClient.get()
                .uri(uri)
                .retrieve()
                .bodyToMono(String.class)
                .block();

        openApiService.init(responseBody);
        returnAll.append(responseBody);

        return returnAll.toString();
    }

 

์˜ค๋ฅ˜ ํ•ด๊ฒฐ ์Šคํ”„๋ง์—์„œ๋„ ์ž˜ ๋ฐ›์•„์™€์ง„๋‹ค!!