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,看一下我们的布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.qianmo.retrofitdemo.MainActivity"> <TextView
android:id="@+id/tv_show"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="还没有数据"/> <Button
android:id="@+id/btn_request"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="32dp"
android:text="请求网络数据"/>
</RelativeLayout>

再看看我们的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")
Call<MovieEntity> getTopMovie(@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);
Call<MovieEntity> call = movieService.getTopMovie(0, 10);
call.enqueue(new Callback<MovieEntity>() {
@Override
public void onResponse(Call<MovieEntity> call, Response<MovieEntity> response) {
tvShow.setText(response.body().getTitle());
} @Override
public void onFailure(Call<MovieEntity> call, Throwable t) {
tvShow.setText(t.getMessage());
}
});

首先创建Retrofit对象,然后在创建Call对象,这样我们就可以请求网络数据了,感觉很简单啊  有木有·····  

  

 

  

  

最新文章

  1. ReactNative新手学习之路06滚动更新ListView数据的小示例
  2. SqlServer索引使用及维护
  3. uva 12745 Wishmaster(2-sat)
  4. Spring基于注解及SpringMVC
  5. 【poj1050】 To the Max
  6. android camera(二):摄像头工作原理、s5PV310 摄像头接口(CAMIF)
  7. struts2操作pojo之小工程struts2ActionPOJO
  8. 一个完善的ActiveX Web控件教程
  9. hdu2151(递推dp)
  10. http接口加密《一》:移动应用中,通过在客户端对访问的url进行加密处理来保护服务器上的数据
  11. redis发布与订阅
  12. vs2013新建asp.net web 项目报错,此模板尝试加载组件程序集NuGet Package Manage
  13. SourInsight4 配置视野内引用高亮
  14. .net Core Abp See config settings - &quot;CustomSchemaIds&quot; for a workaround
  15. linux tail 命令详解
  16. 牛客国庆集训派对Day2 H 期望
  17. 2019.01.01洛谷 P4725/P4726 多项式对数/指数函数(牛顿迭代)
  18. Java并发编程的艺术(五)——中断
  19. Android手动显示和隐藏软键盘
  20. Mysql的学习随笔day2

热门文章

  1. Spring MVC和Struts2的比较的优点
  2. 附件上传 使用javascript
  3. iOS Notification 的使用
  4. for循环练习
  5. AsyncTask的使用
  6. mysql慢日志管理
  7. 当table中的td内容过多,显示不完全,用省略号表示。
  8. CacheManagerUtils.java
  9. EDI - Biztalk Sample
  10. jquery 取消绑定事件