안녕하세요 여러분.
오늘은 안드로이드 스튜디오에 날씨API 적용하는 방법에 대해 알려드릴게요.
이를 바탕으로 다른 API들도 응용해서 사용해보시길 바라요~
기본적으로 코드(KEY) 신청을 했다는 가정하에 글을 작성할게요!!
저는 OpenWeatherMap API를 사용했어요. 페이지는
https://openweathermap.org/api
Weather API - OpenWeatherMap
Please sign up and use our fast and easy-to-work weather APIs for free. Look at our monthly subscriptions for more options rather than the Free account that we provide you. Read How to start first and enjoy using our powerful weather APIs.
openweathermap.org
에요.
여기서
저는 Current & Forecatst API를 선택했어요.
설명서는 저 API doc을 누르면 나오는데 역시나 설명이 알아들을 수 없게 돼있더라구요.
그래서 열심히 공부해서 간단하게 하는법을 찾았어요.
자..
안드로이드 스튜디오 java 코딩을 할 줄 안다는 가정하에 글을 올리게용.
먼저 설명서 스샷.
import android.app.Application;
import org.json.JSONArray;
import org.json.JSONObject;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface WeatherApi {
public static final String API_URL = "https://api.openweathermap.org/"; //저랑 같은 날씨 API를
//쓰면 같아요. 이게 BASE_URL 이 될 수 도 있어요.
@GET("data/2.5/weather") //BASE_URL과 get괄호 안에를 합치면 설명서에 나와있는 주소가 돼요.
Call<Object> getWeather(@Query("q") String q, @Query("appid") String appid);
// q 는 설명서에 ?q 부분이고 appid 도 설명서에 appid 부분이에요. 즉, 설명서 API주소를 이런식으로 맟추는거에요.
}
설명서랑 코딩이랑 비교해 보면 딱 알겠죠? URL에 뭐쓰고 get에는 뭐쓰고 call 부분에 쿼리에는 뭐쓰는지 ㅎㅎ..
사실 interface 까지 만들어서 할 필요는 없지만 체계적인 코딩을 위해서 이렇게 연습하는걸 추천드려용
API사용 하는 엑티비티 부분이에요!
import android.app.Activity;
import android.os.Bundle;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.IOException;
import retrofit2.Call;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class TwoFood extends Activity {
Retrofit retrofit;
WeatherApi weatherApi;
private final static String appKey = "내 코드";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.내 액티비티);
retrofit = new Retrofit.Builder().baseUrl("https://api.openweathermap.org/").addConverterFactory(GsonConverterFactory.create()).build();
weatherApi = retrofit.create(WeatherApi.class);
Call<Object> getWeather = weatherApi.getWeather("London",appKey); //나라는 런던 으로 걍 했어용
try{
System.out.println(getWeather.execute().body());
}catch (IOException e){
e.printStackTrace();
}
}
}
코드를 보시면 알겠지만 interface를 기본으로 간단하게 작성했어요.
baseUrl의 주소는 interface WeatherApi의 url과 똑같죠? 그냥 삽입해도 돼요.
저 코드를 java 메인 함수로 해서 결과를 출력하면.
이렇게 날씨 정보가 나와요!
gson형식인데 알아서 json으로 바꾸어서 틀에 맞게 사용하시면 됩니다!!
질문있으면 댓글 달아주세요~
안녕~
'IT기술(코딩)' 카테고리의 다른 글
retrofit을 이용한 open API 데이터 POJO 만들기,모델 만들기,데이터 틀 만들기 java (0) | 2020.08.05 |
---|---|
socket failed: EPERM (operation not permitted) 에러 해결방법.[안드로이드 스튜디오] (0) | 2020.08.05 |
aws(아마존 외부 서버) 생성, 사용 방법!!!@# (0) | 2020.08.02 |
라즈베리파이 서버 구축 mysql 로그인 오류 해결 (0) | 2020.08.02 |
라즈베리파이 서버 구축 mysql 편 (0) | 2020.08.02 |