일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 내일배움카드
- 혼술 술자리 인싸앱
- 랜덤스쿼드
- 부의감각
- 강아지 #박스집 #복층
- 자바 인강
- #FIFAONLINE4
- 안드로이드 #앱개발#계산기
- 박스#강아지집#만들기
- 홈CCTV
- 스쿼드 메이커
- 안녕 디지몬
- 패스트캠퍼스
- fifaonline4
- 독서감상문
- 피온4
- Java & SpringBoot로 시작하는 웹 프로그래밍
- 부르지마세요
- 강아지 스마트 펜스
- 안드로이드 그림판#그림메모장#낙서장
- D-ID
- 안드로이드
- K디지털크레딧
- 불끌때
- 바이트디그리
- Ai
- fifaonline
- 아두이노#작품#사료급식기
- 안드로이드#앱만들기#알바
- 랜덤
- Today
- Total
LC Studio
Nexon OpenApi Parse with Android Stdio (FIFAONLINE RandomSquadMaker #0) 본문
Nexon OpenApi Parse with Android Stdio (FIFAONLINE RandomSquadMaker #0)
Leopard Cat 2022. 5. 20. 21:05서론
Nexon Open Api는 다음 링크에서 확인할 수 있다.
개발자센터
넥슨 Open API를 활용하여 멋진 경험에 도전해보세요!! 게임 정보, 매칭 기록, 랭킹 지표 등 무궁무진한 데이터를 직접 활용해보세요!
developers.nexon.com
위의 사이트에서는 카트라이더와, FIFAONLINE4의 api만 이용할 수 있다.
다른 넥슨 게임들에도 공개된 api 들이 있지만, 개발자센터에 공개되어있지 않고, 호출방법도 자세히 나와있지 않다.
어쨋든, 나는 FIFAONLINE4 API를 사용할 것이다.
FIFAONLINE4의 경우 위와같은 API를 제공한다.
그 중에서 선수의 정보와 관련된 것들(고유 식별자, 시즌, 이미지)을 사용할 것이다.
이 글에서는 선수 고유 식별자 메타데이터를 통해 선수 이름을 받아올것이다.
본론
선수 고유 식별자 메타데이터의 형태의 예시는 다음과 같다.
[
{
"id": 101000001,
"name": "데이비드 시먼"
},
{
"id": 101000195,
"name": "로비 파울러"
}
]
위와 같은 형태로 Json파일형태로 호출할 수 있다.
형태 및 특징
- 큰 JsonArray안에 여러개의 JsonObject로 구성되어있다.
- https로 호출한다.
- API Key값 없이도 호출 가능하다.
Android Stdio를 켜고,
1. Manifest에 Internet permission을 추가한다.
2. HttpConnector class를 만들고 다음 코드를 추가한다.
public class HttpsConnector extends Thread{
@Override
public void run() {
try{
URL url = new URL("https://static.api.nexon.co.kr/fifaonline4/latest/spid.json");
HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
if(conn != null){
conn.setConnectTimeout(10000); // 일정 시간 기다린 후 연결 안될시 접속종료
conn.setRequestMethod("GET"); // Get방식으로 데이터 가져옴
int resCode = conn.getResponseCode();
int HTTP_OK = HttpsURLConnection.HTTP_OK;
// Log를 통해 서버가 정상적으로 작동되는지 확인인
// Log.d("JsonParsing", "resCode : "+resCode);
//Log.d("JsonParsing", "HTTP_OK : "+HTTP_OK);
if(resCode == HTTP_OK){
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); //Buffer를 통해 Json값 읽음
String line = null;
while (true){
line = reader.readLine();
Log.d("JsonParsing", "line : " + line);
if(line == null){
break;
}
JsonParser.jsonParser(line);
}
reader.close();
}
conn.disconnect();
}
}catch (Exception e){
}
}
}
Json통신을 통해 API 값을 한줄씩 받아온다.
3. JsonParser 클래스를 만들고 다음 코드를 추가한다.
public class JsonParser {
public static void jsonParser(String resultJson){
try {
JSONObject jsonObject = new JSONObject(resultJson);
JSONArray jsonArray = new JSONArray();
JSONObject jsonObject2 = new JSONObject(resultJson);
jsonArray = jsonObject.names();
for(int i=0; i<=jsonArray.length(); i++){
jsonObject2 = jsonArray.getJSONObject(i);
String desc = jsonObject2.getString("desc");
Log.d("JsonParsing","desc : "+ desc);
}
}catch (JSONException e){
}
}
}
위의 경우, 아래의 예시와 같이
"객체 안에 배열 안에 객체"의 형태를 띄고 있는 경우를 생각하고 작성한 예시이다.
Json 상황에 맞게 Array 혹은 Object로 바꿔 작성하면 된다.
{
"player" :[
{
"desc" : "asdnasd"
},
{
"desc" : "fsdafsag"
},
{
"desc" : "asddag"
}
]
}
4. 마지막으로 MainActivity에서 HttpsConnector를 호출한다.
HttpsConnector thread = new HttpsConnector();
thread.start();
위의 코드를 MainActivity에 작성해주면 된다.
결론
위의 경우는 기본적인 경우이고,
나의 경우 Random playername 값을 가져와야하기 때문에 다른 방식으로 API를 받아왔다.
예시를 보여주자면,
아래 log와 같이 값을 받아온다.
2022-05-20 20:57:14.023 5422-5487/com.example.jsontraining D/JsonParsing: line : [
2022-05-20 20:57:14.023 5422-5487/com.example.jsontraining D/JsonParsing: line : {
2022-05-20 20:57:14.023 5422-5487/com.example.jsontraining D/JsonParsing: line : "id": 504165908,
2022-05-20 20:57:14.023 5422-5487/com.example.jsontraining D/JsonParsing: line : "name": "오범석"
2022-05-20 20:57:14.023 5422-5487/com.example.jsontraining D/JsonParsing: line : },
2022-05-20 20:57:14.023 5422-5487/com.example.jsontraining D/JsonParsing: line : {
2022-05-20 20:57:14.023 5422-5487/com.example.jsontraining D/JsonParsing: line : "id": 504176296,
2022-05-20 20:57:14.023 5422-5487/com.example.jsontraining D/JsonParsing: line : "name": "김태윤"
2022-05-20 20:57:14.023 5422-5487/com.example.jsontraining D/JsonParsing: line : }
...
...
...
2022-05-20 20:57:14.023 5422-5487/com.example.jsontraining D/JsonParsing: line : ]
"name"에 해당하는 값의 줄은 4, 8, 12 ...
4의 배수 형태를 띄고있다.
random값을 발생시키고 4를 곱한 값에 해당하는 줄을 받아올 것이다.
'프로젝트 > FIFAONLINE4 RandomSquadMaker' 카테고리의 다른 글
Cleartext HTTP ... not permitted 오류 (0) | 2022.07.05 |
---|---|
Glide 활용 이미지 Load (0) | 2022.06.08 |
시즌별 선수 불러오기(FIFAONLINE RandomSquadMaker #3) (0) | 2022.05.25 |
11명의 선수 포지션별로 불러오기(FIFAONLINE RandomSquadMaker #2) (0) | 2022.05.24 |
Nexon OpenApi를 활용하여 11명의 선수 Random으로 불러오기(FIFAONLINE RandomSquadMaker #1) (0) | 2022.05.22 |