먼저 http통하여 통신을해야 하므로 Volley라는 라이브러리를 사용하였습니다.
Volley에 관한 설명은 좀더 공부하여 다음에 올리도록 예정입니당.
간단히 말하자면 웹요청과 응답을 단순화하고 핸들러를 제공해줍니당.
volley를 사용하기 위하여 build.gradle(app) 의 dependencies에 라이브러리를추가합니다.
dependencies {
//web request
implementation 'com.android.volley:volley:1.2.1'
}
그리고 웹요청을 하므로 인터넷 권한이 추가되어 있어야 한다는 점, 그리고 useCleartextTraffic을 manifests폴더의 AndroidMainfest.xml에 추가해줍니다.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.akj.패키지이름">
<uses-permission android:name="android.permission.INTERNET" /> <!-- 인터넷 권한 -->
<application
android:usesCleartextTraffic="true"
저는 fragment의 onCreate()에서 스레드로 요청을 하고 요청한 것을 volley의 RequestQueue의 큐에 넣어 받아 오도록 하였습니다.
public class Fragment01 extends Fragment {
static RequestQueue requestQueue;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
view = inflater.inflate(R.layout.activity_board, container, false);
firebaseUser = FirebaseAuth.getInstance().getCurrentUser(); // 파이어베이스에서 유저정보를 받아오는데
new Thread(new Runnable() {
@Override
public void run() {
makeRequest("https://api.themoviedb.org/3/trending/all/week?api_key=키값&page=1&language=ko-KR");
}
}).start();
if(requestQueue == null)
{
requestQueue = Volley.newRequestQueue(getActivity().getApplicationContext());
}
먼저 RequestQueue객체를 static으로 선언하고 Thread에서 url을 받아 요청하는 함수인 makeRequest를 실행합니다.
그리고 밑에 request객체를 생성합니다.
makeRequest함수
public void makeRequest(String url)
{
StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.v("output popular", response); //요청 출력해보기
Gson gson = new Gson(); //gson라이브러리 선언
MovieList movieList = gson.fromJson(response, MovieList.class); //gson으로 Json파일 object로 변환
Movie movie = movieList.results.get(0);
Log.v("movie name", movie.title.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("error ", error.getMessage());
}
}
){
protected Map<String, String> getParams() throws AuthFailureError{
Map<String, String> params = new HashMap<String, String>();
return params;
}
};
request.setShouldCache(false);
Log.v("SendRequest","요청 보냄");
requestQueue.add(request); //리퀘스트 큐에 넣어 요청
만약 요청이 오는지만 확인한다면 첫줄의 onResponse()에서 첫번째줄인 Log.v()만 남겨두고 나머지는 지워서 확인 하면 된다.
Gson을 통하여 Movie객체들에 넣는것은 다음 포스트에서 작성하겠습니다.
반응형
'Android Studio' 카테고리의 다른 글
리사이클러뷰(RecyclerView) 3개씩 정렬하여 출력하기 (0) | 2022.12.06 |
---|---|
리사이클러뷰(Recyclerview) 스크롤 시 밀림 (0) | 2022.12.06 |
리사이클러뷰(Recyclerview)를 사용하여 이미지 출력하기 (2) | 2022.12.05 |
프래그먼트(fragment)안에서 버튼 눌렀을 시 해당 프래그먼트 바꾸기 (0) | 2022.12.05 |
Volley Error 해결 - RequestQueue 오류, Context오류 (0) | 2022.11.20 |