Retrofit 설명서

28496 단어 웹 개발
  • 텍스트 링크: Retrofit Android Tutorial
  • 번역문 출처: 개발 기술 전선 www.devtf.cn
  • 역자:yaoqinwei
  • 교정자: chaossss
  • 상태: 완료
  • 이것은 Retrofit를 사용하여 안드로이드의 REST 클라이언트를 쓰는 방법에 대한 작은 강좌입니다.
    Retrofit 를 선택해야 하는 이유
    square의 Retrofit를 사용하기 전에, 나는 Volley와 AsyncTask를 시도한 적이 있다.하지만 Retrofit를 사용한 후에 제 일은 더욱 간단해졌습니다.강좌를 읽기 전에 아래의 몇 가지 화제를 읽어보는 것을 권장합니다.Retrofit를 사용하여 API에서 데이터를 가져오는 방법에 대해 알아볼 수 있는 엔트리 프로젝트입니다.
    이 프로젝트도 나의 Github에 추가되었다.
    AsyncHttp, Volley 및 Retrofit 비교
    Volley는 Retrofit에 비해 작고 정식 문서 설명 라이브러리가 부족합니다.Retrofit는 Square에서 개발한 것이고 후자는 okhttp,picasso도 개발한 적이 있다.유명한 창고를 기다리세요.Volley 가이드가 필요하면 Google Training 또는 Volley Plus from Dwork에서 관련 문서를 찾을 수 있습니다.
    간단한 소개
    Retrofit는 Square에서 개발한 안드로이드와 자바의 REST 클라이언트 라이브러리입니다.이 라이브러리는 매우 간단하고 많은 특성을 가지기 때문에 다른 인터넷 라이브러리에 비해 초보자들이 신속하게 파악할 수 있다.GET, POST, PUT, DELETE를 처리할 수 있습니다.등 요청이 있으면picasso로 그림을 불러올 수 있습니다.Picasso나 Volley를 사용하기 전에 이것을 먼저 읽을 수 있습니다.
    프로필을 고민하지 말고 인코딩을 시작합시다!!!
    데모에서는 Github의 API를 사용합니다.https://api.github.com/users/basil2style
    너는 이 데모 앱을 사용하여github의 사용자 상세한 정보를 검색할 수 있다
    GITHUB
    Download APK
    1) 개요
    1) POJO 또는 모델 엔티티 클래스: 서버에서 가져온 JSON 데이터가 이러한 클래스의 인스턴스로 채워집니다.
    2) 커넥터: GET, POST와 같은 커넥터를 만들어야 합니다.요청한 URL을 기다립니다. 이것은 서비스 종류입니다.
    3) RestAdapter 클래스: 이것은 REST 클라이언트(Rest Client) 클래스입니다.retrofit에서 기본적으로 사용하는 것은 Gson이 JSON 데이터를 해석하는 것입니다. 당신도 자신의 JSON 해석기를 설정할 수 있습니다. 예를 들어 Jackson입니다. 다음 강좌에서 상세하게 설명하겠습니다.
    2) 프로젝트에 Retrofit 라이브러리 추가
    Gradle :
    compile 'com.squareup.retrofit:retrofit:1.9.0'

    현재 1.9.0은 최신 버전입니다.너는 이곳에서 업데이트된 버전을 얻을 수 있다.
    JAR :
    Jar 패키지 다운로드
    3) 프로젝트 작성
    1) Android Studio에서 새 프로젝트 만들기: File => New Project, 설명 정보를 입력하고 Next.
    2) minimum SDK를 입력하고 4.0+(Retrofit는 Android 2.3+ 또는 Java 6 이상 지원)를 사용합니다.
    3) Blank Activity를 선택하고 Activity Name과 Layout Name을 입력하고 Finish를 마지막으로 클릭합니다.
    4)Gradle: 당신은 app=>build.gradle에 Retrofit 라이브러리 파일을 추가합니다.
    Jar 패키지 추가 방법: jar 패키지를libs 폴더에 추가하고 Add as Library를 오른쪽 단추로 누르십시오.
    5) API 및 모델 두 개의 패키지를 생성합니다.
    6) API 패키지에서 New = > Java Class를 마우스 오른쪽 버튼으로 클릭하고 Name을 gitapi로 입력하고 Interface로 설정합니다.
    6) API 패키지 아래에 gitapi라는 인터페이스를 생성합니다.
    7) 모델 패키지에서 New = > Java Class를 우클릭하고 Name을 gitmodel로 입력하고 Class로 설정합니다.
    4) Android Manifest
    1) INTERNET PERMISSION 권한 추가
    <uses-permission android:name="android.permission.INTERNET"/>

    당신의 Manifest 파일은 이렇게 보일 것입니다.
    xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
              package="com.makeinfo.flowerpi" >
       <uses-permission android:name="android.permission.INTERNET"/>
       <application android:allowBackup="true"
           android:icon="@mipmap/ic_launcher"
           android:label="@string/app_name"
           android:theme="@style/AppTheme" >
           <activity
               android:name=".MainActivity"
               android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                     <category android:name="android.intent.category.LAUNCHER" />
                intent-filter>
            activity>
        application>
     manifest>

    5) 모델 클래스
    먼저 POJO 또는 모델 클래스를 생성해야 합니다.서버에서 되돌아오는 JSON 데이터는 자바에서 직접 사용할 수 없기 때문에 모델 클래스로 변환해야 합니다.
    URL의 구조는 다음과 같습니다.https://api.github.com/users/ + “search term”
    밤을 들다.https://api.github.com/users/basil2style
    JSON이 데이터를 반환하는 방법은 다음과 같습니다.
    이것은 JSON Object입니다. 만약 당신이 JSON Array와 JSON Object의 차이를 이해하지 못한다면 여기를 보십시오.
    jsonschema2pojo를 사용하여 POJO를 만드는 것은 더욱 간단합니다. 모든 JSON 데이터의 POJO 변환을 사용하지 마십시오. 때때로 오류가 발생할 수 있습니다.소스 코드 유형은 Json이고 메모 유형은 Gson을 선택한 다음 preview를 클릭합니다.
    여기 (필요) 를 클릭하여 gitmodel.java 원본 코드를 보십시오.
    6) gitapi.java
    1) 이제 URL을 호출하기 위해 인터페이스를 사용해야 합니다.@GET("/users/{user}"), 이 주석을 추가하면 서버를 호출합니다. 파라미터 URL은 BASE URL을 기반으로 하고 서비스 호출의 파라미터는 '/' 으로 시작합니다. 그중 {user}는 EditText에서 가져온 문자열입니다.@Path("user") String user는 EditText에서 가져온 문자열입니다.
    서버에서 응답하는 데이터는 POJO 실례에 저장됩니다.
    public interface gitapi {
    
        @GET("/users/{user}")      // here is the other url part.best way is to start using /
        public void getFeed(@Path("user") String user, Callback response);
         // string user is for passing values from edittext for eg: user=basil2style,google
         // response is the response from the server which is now in the POJO
    }

    7) RestAdapter
    이제 주요 부분입니다. 설정Rest Adapterservice류가 필요합니다.
    1)API는 바로Base URL.
    2) 우리는 Endpoint(API)를 설정하고 buid() 방법을 호출해서 RestAdapter 대상을 만들어야 한다.
    3) 서비스 어댑터 (서비스 for adapter) 를 만들기 위해 저희 gitapi 를 사용합니다.
    4) 함수를 호출하고 응답 데이터를 얻습니다. 리셋 인터페이스는 다른 방식으로 모델을 가져오는 실례로 사용되며, 리셋 인터페이스는 성공적인 리셋 방법(success request)과 오류 처리 방법(error handling)을 실현해야 합니다.
    5) 우리가 해석한 json 데이터는 현재 POJO 실례에 존재하며 매번 하나를 호출할 수 있습니다.
    String API = "https://api.github.com";
    
    RestAdapter restAdapter = new RestAdapter.Builder().setLogLevel(RestAdapter.LogLevel.FULL).setEndpoint(API).build(); 
    
    gitapi git = restAdapter.create(gitapi.class);
    
    git.getFeed(user, new Callback() {
        @Override
        public void success(gitmodel gitmodel, Response response) {
            tv.setText("Github Name :" + gitmodel.getName() + 
                       "
    Website :"
    + gitmodel.getBlog() + "
    Company Name :"
    + gitmodel.getCompany()); pbar.setVisibility(View.INVISIBLE); // disable progressbar } @Override public void failure(RetrofitError error) { tv.setText(error.getMessage()); pbar.setVisibility(View.INVISIBLE); //disable progressbar } });

    전체 MainActivty.java 코드:
    package com.makeinfo.flowerpi;
    
    import android.support.v7.app.ActionBarActivity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ProgressBar;
    import android.widget.TextView;
    
    import com.makeinfo.flowerpi.API.gitapi;
    import com.makeinfo.flowerpi.model.gitmodel;
    
    import retrofit.Callback;
    import retrofit.RestAdapter;
    import retrofit.RetrofitError;
    import retrofit.client.Response;
    
    
    public class MainActivity extends ActionBarActivity {
    
        Button click;
        TextView tv;
        EditText edit_user;
        ProgressBar pbar;
        String API = "https://api.github.com";  // BASE URL
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            click = (Button) findViewById(R.id.button);
            tv = (TextView) findViewById(R.id.tv);
            edit_user = (EditText) findViewById(R.id.edit);
            pbar = (ProgressBar) findViewById(R.id.pb);
            pbar.setVisibility(View.INVISIBLE);
    
            click.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String user = edit_user.getText().toString();
                    pbar.setVisibility(View.VISIBLE);
    
                    // Retrofit section start from here...
                    // create an adapter for retrofit with base url
                    RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(API).build(); 
    
                    // creating a service for adapter with our GET class       
                    gitapi git = restAdapter.create(gitapi.class);  
    
                    // Now ,we need to call for response
                    // Retrofit using gson for JSON-POJO conversion
    
                    git.getFeed(user,new Callback() {
                        @Override
                        public void success(gitmodel gitmodel, Response response) {
                            // we get json object from github server to our POJO or model class
    
                            tv.setText("Github Name :" + gitmodel.getName() + 
                                        "
    Website :"
    +gitmodel.getBlog() + "
    Company Name :"
    +gitmodel.getCompany()); pbar.setVisibility(View.INVISIBLE); // disable progressbar } @Override public void failure(RetrofitError error) { tv.setText(error.getMessage()); pbar.setVisibility(View.INVISIBLE); // disable progressbar } }); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }

    좋은 웹페이지 즐겨찾기