美文网首页
风儿带你学习Retrofit2。从基础开始简单教程(一)。

风儿带你学习Retrofit2。从基础开始简单教程(一)。

作者: yzzCool | 来源:发表于2017-03-03 20:13 被阅读47次

前言

本人第一篇正经文章(不正经的文章没有发表出去),
本文中的Retrofit均指代Retrofit2.0。

任务:简单使用Retrofit2

Retrofit 是什么?

Retrofit 是一个用于 Android 和 Java 平台的类型安全的网络请求框架。Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,你看人家的产品(想想就开心)。
Retrofit在github上的地址:https://github.com/square/retrofit
先来点开胃小菜,提提神。上代码,

public interface GitHubService {
  @GET("users/{user}/repos")
  Call<List<Repo>> listRepos(@Path("user") String user);
}

上面的代码就是Retrofit官网上面的源代码,如果照着源代码写就会出现Repo是干嘛的,一脸蒙蔽了。为了保持清醒上两张图。


retrofit1.png

点击retrofit-adapters进入的页面是长得如下:


retrofit2.png

点击retrofit-converters进入的页面是长得如下:


retrofit3.png

上面出问题的Repo就是和converters有关系了。那么我们来科普一下。
retrofit-adapters表示retrofit支持的适配器,举个例子想要支持RxJava就需要在代码中添加:<font color=red>addCallAdapterFactory(RxJavaCallAdapterFactory.create())</font>。此处只是预热一下。后面我们会说到。
retrofit-converters从字面意思就看的出来转换器。没错就是它,
这个强大的库可以很简单的把返回的 JSON 或者 XML 数据解析成简单 Java 对象。GET, POST, PUT, PATCH, 和 DELETE 这些请求都可以执行。
对比上面的图片可以看到,JSON转换器是:Gson,Jackson,Moshi
对于 Protocol Buffers, 转换器是:Protobuf,Wire
对于 XML 解析, 转换器是:simplexml
对于 text/plain 解析,转行器是:scalars
那么上面的Repo就是java对象自己定义的对象。

1.创建一个 Android Studio 工程

打开 Android Studio,创建一个新工程(直接创建一个新的Module也是一样),然后创建一个命名为 MainActivity 的空白 Activity。


retrofit4.png

2.添加依赖库

创建好新的工程后,在我们的build.gradle(不是整个工程下的)中添加以下依赖。

    //Retrofit
    compile 'com.squareup.retrofit2:retrofit:2.2.0'
    //Retrofit对应json的转换库
    compile 'com.squareup.retrofit2:converter-gson:2.2.0'

3.添加网络权限

我们做的是网络请求,当然要有访问网络的权限。在我们应用的清单文件 AndroidManifest.xml 里面声明网络权限。

    <uses-permission android:name="android.permission.INTERNET"/>

4.创建 API 接口

我们使用https://api.github.com/repos/square/retrofit/contributors 这个地址。新建一个APIGitHub类。我们使用的是ResponseBody,这是okhttp3里面的类,因为Retrofit2里面自动设置了okhttp的依赖,所以我们可以直接用。

public interface APIGitHub {
    @GET("repos/square/retrofit/contributors")
    Call<ResponseBody> getData();
}

GET 注解明确的定义了当该方法调用的时候会执行一个 GET 请求。接口里每一个方法都必须有一个 HTTP 注解,用于提供请求方法和相对的 URL。Retrofit 内置了 5 种注解:@GET, @POST, @PUT, @DELETE, 和 @HEAD。后面我们会讲到。

5.在我们的MainActivity中请求网络

直接上代码。

    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://api.github.com/")
                .build();
        APIGitHub apiGitHub = retrofit.create(APIGitHub.class);
        apiGitHub.getData().enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                if (response.isSuccessful()) {
                    String sting = null;
                    try {
                        sting = response.body().string();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    Log.e(TAG, "获得信息" + sting);
                } else {
                    Log.e(TAG, "获得信息错误");
                }
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                Log.e(TAG, "获得信息直接获得错误+" + t.toString());
            }
        });


    }

现在我们就得到具体的信息了。
以上就是简单的使用。然后发现现在的网络特别不好使,嗨这不是打消我的积极性么????。下一篇我们分析Retrofit详细的使用和转换器的使用。。请期待哦!!

相关文章

  • 风儿带你学习Retrofit2。从基础开始简单教程(一)。

    前言 本人第一篇正经文章(不正经的文章没有发表出去),本文中的Retrofit均指代Retrofit2.0。 任务...

  • 带你零基础学习HTML5

    1个HTML5基础入门教程,4个HTML5小项目教程,带你零基础入门学习HTML5。 【HTML5基础入门】 教程...

  • 文章整理

    廖雪峰Git教程 使用Retrofit2封装适用于组件化项目的网络库 带你一起探究Retrofit 源码,让你不再...

  • iOS视频直播系列

    本教程为是一个系列教程.从0开始带你装逼,带你飞.(开玩笑,大家共同进步_).如若有什么不对请指点。 内容全地址 ...

  • Retrofit 学习笔记(转载)

    转自 你真的会用Retrofit2吗?Retrofit2完全教程 一、使用步骤 1、在 Gradle加入Retro...

  • Java Retrofit2使用--自定义转换器

    Java Retrofit2使用--自定义转换器 Retrofit2的基础使用请参考Java Retrofit2使...

  • blender石中剑练习--Apple的学习笔记

    一,前言 最近还是从基础开始系统学习bendler,网上教程搜索了很多,我学习blender主要做的作品应该就是C...

  • 不迷信系统学习

    学习的方法分门别类,眼花缭乱,各种教程从基础到高级进阶,然而不管是开始直到最后放弃一门教程学习的时候,曾经发觉以为...

  • unity学习体验

    unity需要从认识界面开始学习,最好是有相关的基础视频来帮助学习,之后可以通过官方的实例教程进行学习做一个简单游...

  • Retrofit2简单使用教程

    简介 Retrofit是Square开 发的一个Android和Java的REST客户端库。这个库非常简单并且具有...

网友评论

      本文标题:风儿带你学习Retrofit2。从基础开始简单教程(一)。

      本文链接:https://www.haomeiwen.com/subject/mcurgttx.html