The movi app || JSON Parsing in Android using Retrofit2 || android retrofit get json example

권장 라이브러리 추가 패키지 생성 (API, 어댑터, 모델) 모델 폴더 아래에 "무비 클래스"를 만듭니다 모든 변수 만들기 모델 폴더 아래에 "ResponseMovie Class"를 만듭니다

Retrofit Tutorial — Send Objects In Request Body

이봐 요, 모든 사람들이 무엇인지, Futurestudio University의 Norman

이 Retrofit 시리즈의 두 번째 비디오에 오신 것을 환영합니다 항상 그렇듯이 시작하기 전에 모든 내용을 자습서로 찾아야합니다 웹 사이트에서 쉽게 복사하여 붙여 넣을 수있는 모든 코드 스 니펫을 제공합니다 이 링크는 아래 설명에서 가장 먼저 나와 있습니다 좋아, 시작하자

이 시리즈의 첫 번째 비디오에서 Retrofit이 무엇인지, 어떻게 사용 하는지를 배웠습니다 서버에 데이터를 요청하십시오 Retrofit을 사용하여 사용자의 GitHub 저장소에 액세스하고 표시했습니다 아직 그 비디오를 보지 못했다면 쉽게 볼 수 있으므로 지금보아야합니다 이 비디오의 나머지 부분을 이해할 수 있습니다

이 비디오에서 우리는 주변 환경을 돌리고 서버에 데이터를 보냅니다 단 몇 분 안에 요청 객체로서 Java 객체를 구현하는 방법을 알게 될 것입니다 Android Studio를 시작하기 전에 GET, POST 및 PUT 요청을 빠르게 검토해 봅시다 이 시리즈에서는 아직 이야기하지 않았지만 일반적으로 데이터를 요청하는 경우 서버에서 GET 요청을하는 것입니다 오픈 소스 리포지토리를 전시 할 때 마지막 비디오에서 우리가 한 일입니다

이 비디오에서 우리는 서버에 데이터를 보내고 싶습니다 이것은 보통 POST 또는 PUT 요청에서 수행됩니다 POST 요청은 새 데이터 항목을 추가하려는 경우입니다 (예 : 보내는 경우) 서버가 새로운 계정을 생성한다는 것을 의미하는 사용자 개체 반면에 PUT 요청은 기존 데이터 항목을 업데이트합니다

사용자 예에서는 프로필 업데이트가됩니다 새 사용자를 만들지 않고 단순히 기존 사용자 만 변경합니다 Android Studio를 시작 하시겠습니까? 계획이 무엇입니까? 오늘 우리는 사용자가 새 계정을 만들 수 있도록하는 앱보기를 구현할 것입니다 따라서 새로운 사용자 객체를 서버에 POST 요청으로 보냅니다 이미 뷰 및 기본 추가 기능 설정을 준비했습니다

이제 우리가해야 할 일은 말하고 싶은 종단점을 기술하는 것입니다 API 개발자가 제공 한 내용을 확인해 보겠습니다 API 개발자는 Postman에서 예를 들어 보았습니다이 도구는 꽤 괜찮은 도구입니다 REST 요청을 테스트합니다

요청 본문에는 이름과 이메일이 문자열로 포함되어야하며 연령은 정수 값이며, topics는 사용자가 관심있는 주제 문자열 배열입니다 또한 URL은 / api / user에 있음을 알고 있습니다 또한 POST 요청을 보내야한다는 것을 다시 알 수 있습니다 이제 Retrofit에서 엔드 포인트를 설명하기 위해 알아야 할 모든 것입니다 이것을 실행하면 정확한 사용자 객체를 얻는 것을 볼 수 있습니다

신분증 좋습니다 이제 우리는 Retrofit 엔드 포인트로 본 엔드 포인트를 설명해야합니다 우리는 새로운 계정을 만들므로 끝점을 createAccount ()로 지정합시다 우리는 사용자 객체를 가지고 새로운 계정을 만들고 있습니다, 그래서 사용자 객체를 전달합시다

우리는 또한 사용자 객체를 다시 얻고 있습니다 그래서 당신이 사용하고자하는 컨텍스트에 따라 다릅니다 응답 및 요청에 대한 클래스가 있지만이 경우 거의 동일하므로 그냥 같은 클래스를 사용할 것입니다 Retrofit에서는 항상 Call <> 클래스로 래핑해야합니다 다음으로 추가 정보를 주석으로 추가해야합니다

먼저 이것이 POST 요청이라는 것을 알고 있으므로 @POST 주석을 추가합시다 마지막 부분은 사용자 객체를 요청 본문으로 선언하는 것입니다 이 작업은 @Body 어노테이션으로 수행됩니다 Retrofit은 이제 전달 된 사용자 객체에서 요청 본문을 만듭니다 여기에서 할

다음은 사용자 객체를 설명합니다 우편 배달부의 요청을 통해 알 수 있듯이 여기에는 네 가지 속성이 있습니다 우리는 문자열 이름을 가지고 있습니다 우리는 문자열 전자 메일을 가지고 있습니다 우리는 정수 나이를 가지고 있습니다

우리는 문자열 배열을 가지고 있습니다 사용자가 관심을 갖고있는 주제의 모두 비공개로 설정합시다 또한 우리가 사용자를 되 찾을 때 우리는 정수를 얻게 될 것입니다 이것은 nullable이므로 Integer 클래스를 사용합니다 마지막으로 ID없이 생성자를 추가해 봅시다

서버에 전달할 때 아직 ID가 없습니다 모든 것이 성공했는지 표시 할 수 있도록 ID에 대한 getter를 가져 오십시오 알았어, 그건 사용자 클래스 야 나는 MainActivity에 뛰어 들었다 나는 이미 지루한 시야의 물건과 개조의 기초를 준비했습니다

사용자가 '계정 만들기'버튼을 클릭하면이 속성을 읽어야합니다 , 사용자 개체를 만든 다음 서버로 보냅니다 그러자 우리는 새로운 사용자 객체를 가지고 있습니다 방금 생성 한 생성자를 사용하고 이름을 전달하고 전자 메일을 전달할 수 있습니다

정수가 된 나이를 전달하면 조금 변형됩니다 [일반적인 개발자 소음] 마지막으로, 우리는 문자열 배열이었던 주제를 보내야합니다 그러나 우리는 오직 하나의 EditText만을 가지고 있습니다 모든 쉼표 뒤에 [EditText input]을 나눕니다 그럼 topics

getText () toString ()을 사용하겠습니다 그 다음 쉼표마다 쪼개십시오 좋아요, 우리는 사용자 객체를 가지고 있습니다! 이제 우리는 그것을 서버에 보내야합니다 그래서 우리는 여기에 이것을 통과시키고 여기에 뛰어 들게 될 것입니다

이미 UserAPI 클라이언트를 준비했습니다 이제 우리가해야 할 일은 요청에 대한 호출 객체를 얻는 것입니다 그리고 우리는 단순히 client를 호출함으로써 그렇게 할 수 있습니다 우리의 새로운 방법이 있습니다 방금 읽은 사용자 객체를 끝점에서 전달할 수 있습니다

Call <> 객체가 반환됩니다 우리는 비동기로 작업하기 때문에 우리는 enqueue ()를 사용할 것이고 우리는 콜백을 전달할 것입니다 이제 무언가 잘못되었을 때, 나는 단지 작은 토스트를 할 것입니다 모든 것이 끝나면 Toast를 표시하고 사용자 ID를 표시합니다 우리는 사용자 객체를 서버에서 다시 가져올 때 사용자 ID를가집니다

마지막 비디오에서 알 수 있듯이 responsebody ()를 통해 서버 응답에 액세스 할 수 있으며 getter ID 메쏘드를 선언 했으므로 여기서 사용할 수 있습니다 마지막으로 우리는 요청을 실행하므로 서버가 수신하는 내용과 운동 자, 예제 입력을 추가해 보겠습니다 좋아, 그래! 사용자 ID가 있습니다

야 예를 들어 사용자가 PUT 요청으로이 모든 것을 보내면 그의 계정에서 우리는 단순히 종점 선언을 변경합니다 따라서 UserClient로 돌아가 이것을 PUT 요청으로 변경하면됩니다 그것이 우리가해야 할 모든 것입니다 또는 두 가지 방법이 모두 필요하다면 여기에 두 번째 끝점을 만들 수 있습니다

계정 및 업데이트 사용자 프로필 Retrofit에 대한 좋은 점은 아직 말하지 않았지만 객체 속성이 null 인 경우입니다 개장은 단지 그것을 무시할 것입니다 사용자 클래스에서 ID는 서버로 보낼 때 null입니다 null이기 때문에 Retrofit은 JSON 속성을 만들지 않습니다 그것은 단지 그것을 무시할 것입니다

우리가이 비디오에서 배운 것을 복습 해 봅시다 실제 GET, POST 및 PUT 요청의 차이를 살펴 보았습니다 또한 자바 객체를 요청 본문으로 서버에 보내는 방법을 배웠다 보고 주셔서 감사합니다! 우리가 여기와 주셔서 감사합니다 뭔가를 배웠고 더 많은 비디오를보고 싶다면 구독하십시오

이 시리즈에서 그것을 흔들어서 코딩을 즐기십시오 [멋진 아웃로 뮤직]

Retrofit Tutorial — Getting Started and Creating an Android Client

[멋진 음악 소개] 이봐, 모두 무슨 일이야! futurestudio에서 노먼 여기 대학

이 Retrofit 시리즈의 첫 번째 비디오에 오신 것을 환영합니다 시작하기 전에 자습서로 내용을 찾을 수 있어야합니다 웹 사이트에서 쉽게 복사하여 붙여 넣을 수있는 모든 코드 스 니펫을 제공합니다 이 링크는 아래의 설명에서 가장 먼저 나와 있습니다 좋아, 시작하자! 이 비디오에서는 두 가지를 배웁니다

먼저, 개조 서비스가 무엇인지 설명하겠습니다 왜 그것을 사용해야하는지 둘째로 우리는 GitHub API와 상호 작용하는 데 필요한 모든 단계 구체적으로 모든 공개 GitHub 저장소를 사용자의 Android 앱에 표시 할 수 있습니다 Android Studio를 시작하기 전에 Retrofit에 대해 이야기 해 봅시다

개발중인 스퀘어 개조, "Android 및 Java 용 유형 안전 REST 클라이언트"로 설명 그럼 그게 무슨 뜻 이죠? 내가 이야기 해 줄께 2010 년, 내가 안드로이드 개발을 시작한 마커스와 나는 네트워크 요청을하는 방법을 알아 내려고 노력했다 그 당시에는 도서관이 없었습니다

우리는 모든 것을 스스로해야했습니다 낮은 수준의 Java 연결에서 스레딩, JSON 응답 구문 분석 우리의 REST 클라이언트가 작동했습니다 그러나 그것은 복잡하고 지저분했다 개조로 이러한 지저분한 구현 세부 사항이 모두 숨겨집니다 당신은 네트워크 수준에서 물건을 다룰 필요가 없습니다

스레딩에 신경 쓰지 않아도됩니다 요청 및 응답을 구문 분석합니다 Retrofit 만 있으면됩니다 끝점을 설명하는 것입니다 그들은 무엇을 기대하고 무엇을 응답하고 당신은 좋은거야! 이렇게하면 API와 상호 작용하는 앱을 개발하는 것이 훨씬 쉬워집니다

개조는 초기에는 조금 복잡하지만 장기적으로 볼 때 가치가 있습니다 우리는 안드로이드 애플 리케이션에서이 시리즈의 모든 것을 보여줄 것이지만 자바 서버에서도 사용할 수 있습니다 개조는 두 가지 모두에서 가능합니다 이제 우리의 초간편 GitHub 앱을 시작해 보겠습니다 비디오 끝의 목표는 사용자로부터 리포지토리 목록을 표시하는 것입니다

공상에 들지는 않으나, Retrofit을 사용하기 위해 필요한 모든 단계를 밟을 수있는 좋은 방법입니다 그래서 우리는 무엇을해야합니까? 먼저 Retrofit 종속성을 추가해야합니다 다음으로 우리는 말하고 싶은 끝점을 설명해야합니다 그런 다음 GitHub가 JSON을 데이터 형식으로 사용하므로 JSON 매핑을 설정해야합니다 마지막으로 Retrofit 클라이언트를 만들고 요청을 실행합니다

이제 Android Studio로 전환 할 차례입니다! 좋아, Retrofit을 Gradle 종속 항목으로 추가해야합니다 나는 우리 애플 리케이션의 buildgradle에 여기에있다 종속성에서 여기에 두 개의 종속성을 추가 할 것입니다 개조가 자체적으로 네트워킹을 수행하지는 않습니다

개발자가 쉽게 사용할 수 있도록이 레이어 위에 구축되었습니다 개조는 OkHttp를 네트워크 계층으로 사용하고 [의존성으로] 자동으로 가져옵니다 특정 버전의 OkHttp가 필요하면 여기에 다른 종속성을 추가 한 다음 버전을 지정해야합니다 GitHub는 JSON을 응답 및 요청의 데이터 형식으로 사용하기 때문에 변환기를 사용해야합니다 자바 객체를 JSON으로 변환하거나 JSON에서 변환 할 수 있습니다

우리는 이후 비디오에서 변환기에 대해 자세히 설명 할 것입니다 좋아요,이 프로젝트를 동기화 할 차례입니다 API 끝점에 대해 설명하기 전에 AndroidManifestxml을 확인해야합니다 실제로 네트워크 요청을 할 수있는 권한이있는 경우 우리는 여기에 가기 좋습니다

Retrofit을 더 자주 사용하면 API 엔드 포인트를 설명하는 데 대부분 시간을 할애 할 수 있습니다 이제 우리는 정확한 구현이 실제로 우리에게 중요하지 않으므로 인터페이스를 만들고 있습니다 이 GitHub 클라이언트를 호출했습니다 우리의 목표는 사용자의 저장소 목록을 표시하는 응용 프로그램을 구현하는 것이 었으므로 해당 끝점과 메서드가 필요합니다 한 사용자에 대한 저장소를 확보 할 수 있습니다

이 끝점을 설명하기 시작합니다 우리는 사용자로부터 리파지토리를 갖고 싶기 때문에 [reposForUser]를 호출하자 [강렬한 타이핑 노이즈] 또한 리포지토리를 요청하려는 사용자에 대한 매개 변수를 전달하려고합니다 그래서 우리는 String 사용자와 같은 것을 갖게 될 것입니다 마지막으로 우리는 응답이 무엇인지 설명하고 GitHub 저장소의 목록입니다

그래서 "List <>"이고 이미 "GitHubRepo"클래스를 준비했습니다 이것이 바로이 종말점에 대한 우리의 높은 수준의 이해입니다 물론, 실제 구현을 위해서는이 정보가 충분하지 않습니다 따라서 메소드에 더 많은 [메타] 정보를 주석으로 추가해야합니다 먼저 GET 요청임을 지정해야합니다

그리고 우리는 @GET () 주석에 의해 그렇게합니다 그런 다음 요청의 끝점을 알려줍니다 따라서 우리는 GitHub API를 확인하여 / users 아래에 있는지 확인합니다 우리는 사용자 / fs-opensource가 될 것입니다 및 / repos 일반적으로 전체 URL이 아닌 상대 URL을 사용하려고합니다

하지만 나중에 비디오에서 더 이 정적 URL을 사용할 수는 있지만 사용자의 동적 매개 변수를 전달하기 때문에 다소 괴롭습니다 우리는이 사용자 이름을 동적으로이 사용자 이름으로 대체하려고합니다 개조에는 "경로 매개 변수"라는 것이 있습니다 자세한 내용은 이후 비디오에서 자세히 설명합니다

하지만 기본적으로 우리는 이것을 여기에서 대체합니다 {user}를 대괄호로 묶은 다음이 [@String] 매개 변수에 @Path 주석을 달아 주석 처리합니다 Retrofit에게 우리가 여기서 통과하는 것이 여기에서 교체 될 것이라고 말하십시오 이제 런타임 중에 저장소를 요청할 사용자를 결정할 수 있습니다 거의 완료되었습니다 이런 식으로 남겨두면 동기식 메서드가됩니다

따라서 앱에서 GitHub 저장소를 요청하면 네트워크 연결이 시작되고 서버가 응답하고, 응답을 구문 분석 한 다음 초 후에 우리의 응용 프로그램으로 돌아옵니다 이렇게하면 UI가 완전히 멈추고 Android 40 이상에서 [앱]이 다운되기 시작합니다 UI 스레드로부터 요청을하려면 비동기 적으로 처리해야합니다 개조하면이 [async]가 숨겨 지지만 Call <> 객체로 반환해야합니다

따라서 반환 값은 List <>가 아니며 GitHub 저장소 목록으로 형식화 된 Call <List <>>입니다 다음으로 실제로 GitHub 저장소 란 무엇인지 설명해야합니다 그래서 우리는 GitHubRepo 클래스로 뛰어갑니다 이 클래스에서는 GitHub 저장소와 함께 제공되는 데이터의 종류를 설명합니다 이것은 단지 작은 예제 일 뿐이므로 저장소의 이름 인 하나만 지정합니다

우리는 UI에 실제로 사용할 수 있도록 getter를 빠르게 추가 할 것입니다 우린 끝났어 실제로는 더 많은 속성을 여기에 추가해야하지만 지금은 충분합니다 자, 이제 주요 활동으로 갈 시간입니다 이미 데이터를 표시하는 데 사용할 작은 ListView를 준비했습니다

개장의 심장은 "개장 (Retrofit)"이라고 불리는 수업입니다 쉽게 구성 할 수 있도록 개발자는 유창한 API를 추가했습니다 RetrofitBuilder [개조] 빌더를 만들기 시작하겠습니다

[강렬한 프로그래밍] 일반적으로 지정해야 할 한 가지는 기본 URL입니다 처음에는 상대적 URL 만 사용했음을 기억합니까? 이렇게하면 원하는 때마다 기본 URL을 간단히 변경할 수 있고 모든 끝점을 변경할 필요가 없다는 장점이 있습니다 GitHub의 경우 https://apigithubcom/입니다

다음으로 변환기를 추가해야합니다 이미 GitHub가 JSON을 데이터 형식으로 사용한다고 언급했습니다 우리는 Gson이 자바 객체와 JSON간에 변환 할 필요가있다 그것을 추가합시다addConverterFactory를 사용하여 표준 Gson 인스턴스를 전달하려고합니다 조금 더 멋지게 포맷 해 봅시다 우리는 여기서 끝났어 좀 더 복잡해 보이지만 몇 번이나 개조를하면 이해할 수 있습니다 우리는 건축업자를 얻었으므로 실제 개보수 물체를 만들 차례입니다

Retrofit을 말하고 "개장"이라고하며 간단히 "builderbuild ()"라고합니다 나는 그것이 다소 비어있는 것처럼 보지만, 장래에 우리는 인증과 전역 오류 처리와 같은 것들을 추가 할 것입니다 우리의 준비가 끝났기 때문에 실제 요청을 할 때가되었습니다 먼저 GitHub 클라이언트의 인스턴스가 필요합니다

retrofitcreate ()를 사용하면 GitHubClient 클래스 [인터페이스] 만 전달할 것입니다 이것은 GitHubClient 여야합니다 이 "클라이언트"라고 부르 자 다음 단계는 클라이언트에서 reposForUser () 메소드를 호출하는 것입니다

우리는 우리 자신의 GitHub 사용자 이름 "fs-opensource"를 전달할 것입니다 아시다시피 이것은 작은 Call <> 객체를 반환합니다 마지막 단계는이 Call <> 객체를 활용하는 것입니다 여기에 두 가지 옵션이 있습니다 동 기적으로 또는 비동기 적으로 실행할 수 있습니다

UI 스레드에서 활동 중이므로 "대기열에 넣기"라는 메소드로 비동기로 처리해야합니다 우리는 callenqueue ()라고 말하고 콜백을 기대합니다 콜백은 서버에서 응답을 받으면 실행됩니다 여기서는 두 가지 주요 옵션을 다루어야합니다

onFailure () : 인터넷에 연결되지 않은 것처럼 네트워크에 문제가있는 경우 호출됩니다 서버에서 실제로 응답을 받으면 onResponse ()를 호출합니다 실패 상황을 먼저 다루겠습니다 우리는 단순히 사용자에게 무언가 잘못되었다는 사실을 보여줄뿐입니다 분명히,이 문제를 다루는 가장 좋은 방법은 아니지만 지금은 충분합니다

우리는 응답 객체를 사용할 것입니다 body ()가 List <GitHubRepo> 인 것을 볼 수 있습니다 마지막 단계는 ListView에 데이터를 전달하는 것입니다 나는 이것이 실제로 효과가 있는지보기 위해 기쁩니다! 겁탈 자 : 그것은하지 않습니다 : ( 불행히도, 그것은 작동하지 않았고 기본 URL에 약간의 오타가 있었기 때문입니다 그것을 고치고이 일을 다시 시작합시다

자, 가자 오픈 소스 계정의 모든 GitHub 저장소를 볼 수 있습니다 우리가 배운 것을 빨리 재검토합시다 Retrofit을 사용하여 개요 및 초기 구현을 보았습니다 몇 가지 질문이있는 부분이 많았지 만 걱정하지 않으셔도됩니다

향후 동영상에서 그 부분을 참조하겠습니다 관심을 가져 주셔서 감사합니다 새로운 것을 배운 적이 있다면 비디오를 좋아하십시오 이 연재에서 더 많은 비디오를보고 싶다면 구독하십시오 그것을 바위처럼 만들고 코딩을 즐기십시오! [멋진 아웃로 뮤직]