필자는 api를 제대로 사용해본적이 없어서 이번에 한번 사용해보려 한다
겸사 겸사 버스역 앱이 잘되있는게 없어서 직접 만들어서 사용하려 한다

언제나 그렇듯, 필자는 게임개발자이기 때문에 유니티로 모바일 앱을 만들것이다
대충 api는 https://www.data.go.kr/index.do에서 신청해서 받았다
혹시나 만들어볼 사람은 참고하면 될 것 같다
공공데이터 포털
국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase
www.data.go.kr

플렛폼을 모바일 안드로이드로 변경해 준다
그뒤 api를 가져오는 스크립트를 작성한다
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class GetBusInfo : MonoBehaviour
{
private string apiKey;
public string busStopId;
void Start()
{
TextAsset textAsset = Resources.Load<TextAsset>("BusApiData");
if (textAsset != null)
{
apiKey = textAsset.text.Trim();
}
else
{
Debug.LogError("API Key file not found!");
return;
}
StartCoroutine(GetBusArrivalInfo());
}
IEnumerator GetBusArrivalInfo()
{
string url = $"https://api-url-goes-here/busArrivalInfo/getStaionByUid?serviceKey={apiKey}&arsId={busStopId}";
using (UnityWebRequest request = UnityWebRequest.Get(url))
{
yield return request.SendWebRequest();
if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
{
Debug.LogError($"Error fetching bus data: {request.error}");
}
else
{
Debug.Log($"Bus Arrival Data: {request.downloadHandler.text}");
}
}
}
}
특정 역의 남은 버스 대기시간을 debug로 출력한다

시작부터 즐거운 오류이다

아마 api를 잘못 사용해서 벌어진 문제인것 같다

gpt를 통해서 정확한 사용방법을 받아서 코드를 수정한다
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class GetBusInfo : MonoBehaviour
{
private string apiKey;
public string busStopId;
public string routeNo;
void Start()
{
// API 키를 Resources 폴더에서 불러오기
TextAsset textAsset = Resources.Load<TextAsset>("BusApiData");
if (textAsset != null)
{
apiKey = textAsset.text.Trim();
}
else
{
Debug.LogError("API Key file not found!");
return;
}
StartCoroutine(GetBusArrivalInfo());
}
IEnumerator GetBusArrivalInfo()
{
string url = $"http://apis.data.go.kr/2280000/getRealtime?serviceKey={apiKey}&bsId={busStopId}&routeNo={routeNo}";
using (UnityWebRequest request = UnityWebRequest.Get(url))
{
yield return request.SendWebRequest();
if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
{
Debug.LogError($"Error fetching bus data: {request.error}");
}
else
{
string jsonResponse = request.downloadHandler.text;
Debug.Log($"Bus Arrival Data: {jsonResponse}");
}
}
}
}

뭔가 오류가 바뀐걸 보니 무언가 수정된 것 같다
- Non-secure network connections disabled in Player Settings
→ Unity 설정에서 HTTP(비보안) 요청이 차단된 상태입니다. - InvalidOperationException: Insecure connection not allowed
→ Unity에서 HTTP 요청을 차단하고 있어 API 요청이 실패하고 있습니다.
둘다 http연결이 차단된 문제인 것 같다

일단 접속을 무조건 허용한다

또다른 오류가 나를 반긴다
그나마 다행인건 오류코드가 나온다는 것이다

혹시나 싶어 직접 연결해보니 서버는 정상 작동중이다

주소를 직접 넣어서 사용하니 이렇게 나온다
현재 SSL문제 = 보안쪽 문제가 생긴 것 같다

https://docs.unity.com/ugs/ko-kr/manual/authentication/manual/common-errors
흔히 발생하는 오류
흔히 발생하는 오류#Android 네트워크 오류:#SSL CA 인증서 오류:Android 기기에서는 TLS 버전 1.2 이상만 지원합니다. TLS 1.2는 Android API 레벨 16 이상에서 지원되며 레벨 21 이상에서는 기본적으로 활성화
docs.unity.com
안드로이드 버전을 높여보라고 한다

api레벨을 최대로 올린다
그래도 안된다...
'개발일지' 카테고리의 다른 글
버스역 대기시간 앱 만들기 프로젝트 - 2 (0) | 2025.03.16 |
---|---|
[유니티 게임 개발] 동방을 걷다 프로젝트 6 - 상점 구현, 전투씬 구현 2024 05 17(PM 06:00) (0) | 2024.05.18 |