특강에서 나왔던 내용대로 NexonApi를 사용해 정보를 추출할 스크립트를 작성했다.
근데 디버그 로그에 원했던 결과값이 출력이 안됬다.
{"error":{"name":"OPENAPI00004","message":"Please input valid parameter"}}
OPENAPI0004란 에러 코드를 통해 NEXONAPI사이트 API사용하기를 보면
API 사용 중 발생한 에러의 경우 코드만 보고 에러 사유를 판단할 수 있게 정리되어 있다.
또한 API 테스트를 하는 방법도 정리되어 있다.
어찌됬든, 디버그에 출력된 에러 메세지와 마찬가지로 파라미터 값이 지금 문제가 있다는 것인데
내가 원했던 정보의
IEnumerator GetOUID(string nickname)
{
// Get으로 요청
string path = url + "tfd/v1/id?user_name=" + nickname;
UnityWebRequest www = UnityWebRequest.Get(path);
// 헤더 추가
www.SetRequestHeader("x-nxopen-api-key", apikey);
// 웹 요청이 올 때까지 대기
yield return www.SendWebRequest();
// 결과 확인
string result = www.downloadHandler.text;
Debug.Log(result);
}
이런 식의 코드를 통해 보냈었다.
계정명을 통해 검색에 필요한 OUID를 받아오는 요청이었는데, 다시 둘러봐도 파라미터에 어디가 부족했는진 모르겠다.
뒷 부분은 한글이나 문자가 변환되는 형식이니까 약간 다르긴 한데, 영향이 있을까?
apikey나 apipath가 잘못되었다면 위와같은 다른 에러코드가 나왔을 것 같은데 알 수가 없다.
테스트 id를 사이트에서 입력했을 때는 정상적인 반환값이 나왔기 때문에 문제가 있었을 것 같지는 않다.
IEnumerator GetOUID(string nickname)
{
// Get으로 요청
string path = url + "maplestory/v1/id?character_name=" + nickname;
UnityWebRequest www = UnityWebRequest.Get(path);
Debug.Log(path);
// 헤더 추가
www.SetRequestHeader("x-nxopen-api-key", apikey);
// 웹 요청이 올 때까지 대기
yield return www.SendWebRequest();
// 결과 들어오는 곳 www.downloadHandler.text
string result = www.downloadHandler.text;
Debug.Log(result);
}
위와 동일한 코드에서 메이플 스토리에서 입력해보니 정상적인 반환값이 돌아왔다.
추측할 수 있는 건 이제 nickname 부분이 잘못 됬을 가능성??
예시 리퀘스트를 보니 ㅁㅁㅁ%23ㅁㅁㅁ 이런 식으로 변환이 되서 요청됬기 때문이다.
이럴 위해 UnityWebRequest.EscapeURL 메서드를 통해 문자열을 URL 인코딩 된 형식으로 변환해 보았다.
string encodedNickname = UnityWebRequest.EscapeURL(nickname);
string path = url + "tfd/v1/id?user_name=" + encodedNickname;
UnityWebRequest www = UnityWebRequest.Get(path);
반환된 값은 에러코드 OPENAPI00006
실패다.는 성공이었다.
api키가 메이플과 달랐는데, 굉장히 복잡한 api구조에서 눈대중으로 같은건가? 싶어서 안바꾸고 했더니 발생한 문제였다!
드디어 정상적인 시작 구조를 만들었으니 이제부터 다양하게 정보를 요청하고 받아오게 해보자.