Retrofit 설명서
28496 단어 웹 개발
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 Adapter
과service
류가 필요합니다.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);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Emacs에서 디폴트보다는 편하게 JSP를 쓰고 싶다.Emacs에서 JSP(JavaServer Pages)를 쓰게 되었지만 코드 성형 설정이 없었다. CentOS 6 GNU Emacs 23.1.1 STEP 1 의 다운로드에서 파일을 다운로드합니다. (나는 Github에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.