하얀설표 블로그




해결)공공데이터포털 api SERVICE ERROR HTTP ROUTING ERROR





( 수정됨)


에러

xml=<?xml version="1.0" encoding="utf-8"?>
<OpenAPI_ServiceResponse>
<cmmMsgHeader>
<errMsg>SERVICE ERROR</errMsg>
<returnAuthMsg>HTTP ROUTING ERROR</returnAuthMsg>
<returnReasonCode>04</returnReasonCode>
</cmmMsgHeader>
</OpenAPI_ServiceResponse>

해결방법

해당 에러 발생시 일정 시간 대기 후 재요청하는 명령을 심어둔다.

설명

해당 에러는 말 그대로 "HTTP ROUTING ERROR"다.
라우팅.. 네트워크 상 통신 문제로 인한 에러이기 때문에 서버에서 해결해줘야하는 문제다.

환경 문제일까?

찾아보니 여기저기서 주워들은 정보로 요청 헤더에 Accept: */*;q=0.9 값을 추가하면 해결된다는 내용도 보였는데, 이것은 문제 해결에 전혀 도움을 주지 않는다.
헤더값을 추가해보았으나 간헐적으로 "HTTP ROUTING ERROR" 응답을 받는 것은 여전했다.

공공데이터포털 개발자 네트워크를 찾아보면 이 문제의 해결방법이라며 conn.setRequestProperty("Accept", "text/html;"); 설정해보라는 글이 있다.
요청 헤더에 Accept: text/html 값을 추가해보았지만.. 간헐적으로 문제가 발생하는 것은 여전했다.
물론, 내가 잘못 설정한 걸 수도 있다.

혹시나 싶어 웹브라우저로 api 요청을 보내보았더니 같은 문제가 발생하는 것을 확인할 수 있었다.
그냥 서버쪽 문제라고 생각된다.

공공데이터포털 HTTP ROUTING ERROR http 접속

https에서는 어떨까?

말도 안되는 생각이란건 알지만, 에러 메세지가 "HTTP ROUTING ERROR"이니 http가 아닌 https로 요청을 보내보면 어떨까하는 생각에 실험해봤다.
결과는 마찬가지로 간헐적으로 같은 문제가 발생하는 것을 확인할 수 있었을 뿐이었다.

공공데이터포털 HTTP ROUTING ERROR https 접속

그냥 대기시간을 주자

단순한 통신 오류인지 잠시 기다린 다음, 다시 응답 요청을 보내면 정상 응답을 받을 수 있었다.
내 경우 라우팅 에러 발생시 15~20초 정도 대기 후 재시도하도록 설정하니 2번째 요청에서는 문제가 발생하지 않았다.

또한 마땅한 해결 방법을 찾을 수 없어 공공데이터포털 고객센터에 직접 전화하여 이야기해봤더니 포털에서도 이 문제를 이전부터 인지하고 있었으나, 해결을 하지 못하고 있는 상황이라는 답변을 받을 수 있었다.

2023.10.31 추가

해결 방법

api 응답 대기 시간이 5~10초를 초과하면 통신을 끊고, 다시 요청한다.

설명

우연한 기회에 문제의 원인을 알게 되었다.
"HTTP ROUTING ERROR"는 api 요청자 쪽 문제가 아닌 api 서버 자체의 문제로, api 서버에서 요청을 받고 30초 이내에 응답을 보내지 못하면 강제로 발생시키도록 되어있는 에러라고 한다.
즉, api 서버에서 발생한 에러로 응답이 지연되는 것을 방지하기 위한 에러였던 것이다.

응답이 평균 응답 시간보다 오래 걸린다면 서버에서 정상적인 작업이 아닌 연산 에러가 발생했을 확률이 높다.
이 경우 30초를 초과하는 순간 서버에서 자체 에러를 발생시키기 때문에 아무리 기다려도 원하는 응답을 얻기는 어렵다.

보통 api 요청을 보내면 1초 안으로 응답이 오기 때문에 평균 응답 시간보다 응답이 오래 걸린다면 기존 요청을 취소하고 새로 요청을 보내자.


공감 : 0







white.seolpyo.com