1,如果不太了解retrofit的同学可以先去官网学习一下简单使用:http://square.github.io/retrofit/,这里我们以一个简单的Get请求的例子来练习一下
2,https://api.douban.com/v2/movie/top250?start=0&count=10 目标地址,由于数据太多我就不再啰嗦数据解析了,如果觉得Gson数据麻烦的话可以使用GsonFormat插件,先来看看怎么添加依赖吧
apply plugin: 'com.android.application'android { compileSdkVersion 25 buildToolsVersion "25.0.0" defaultConfig { applicationId "com.qianmo.retrofitdemo" minSdkVersion 15 targetSdkVersion 25 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:25.0.0' compile 'io.reactivex:rxjava:1.1.0' compile 'io.reactivex:rxandroid:1.1.0' compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4' compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4' compile 'com.google.code.gson:gson:2.6.2' compile 'com.jakewharton:butterknife:7.0.1' //这里其实只需要添加下面的这几个就可以了 compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4' compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4' compile 'com.google.code.gson:gson:2.6.2' compile 'com.jakewharton:butterknife:7.0.1}
2,看一下我们的布局文件
再看看我们的Activity
package com.qianmo.retrofitdemo;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.TextView;import com.qianmo.retrofitdemo.entry.MovieEntity;import com.qianmo.retrofitdemo.http.MovieService;import butterknife.Bind;import butterknife.ButterKnife;import butterknife.OnClick;import retrofit2.Call;import retrofit2.Callback;import retrofit2.Response;import retrofit2.Retrofit;import retrofit2.converter.gson.GsonConverterFactory;public class MainActivity extends AppCompatActivity { @Bind(R.id.tv_show) TextView tvShow; @Bind(R.id.btn_request) Button btnRequest; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); } @OnClick({R.id.btn_request}) public void onClick(View view) { switch (view.getId()) { case R.id.btn_request: getMovie(); break; } } //请求网络数据 private void getMovie() { } }
由于是网络请求,所以千万别忘记网络请求权限
接下来为我们的数据创建一个bean,MovieBean,代码太多了,就不贴了,然后就开始创建我们的service接口,由于是get请求的基本语法,所以就没什么可以讲解的
package com.qianmo.retrofitdemo.http;import com.qianmo.retrofitdemo.entry.MovieEntity;import retrofit2.Call;import retrofit2.http.GET;import retrofit2.http.Query;/** * Created by wangjitao on 2016/11/3 0003. * 获取电影列表接口 */public interface MovieService { @GET("top250") CallgetTopMovie(@Query("start") int start ,@Query("count") int count);}
在Activity中使用
String baseUrl = "https://api.douban.com/v2/movie/"; //创建Retrofit对象 Retrofit retrofit = new Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create()) .build(); MovieService movieService = retrofit.create(MovieService.class); Callcall = movieService.getTopMovie(0, 10); call.enqueue(new Callback () { @Override public void onResponse(Call call, Response response) { tvShow.setText(response.body().getTitle()); } @Override public void onFailure(Call call, Throwable t) { tvShow.setText(t.getMessage()); } });
首先创建Retrofit对象,然后在创建Call对象,这样我们就可以请求网络数据了,感觉很简单啊 有木有·····