平方X

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4137|回复: 3

[Android] retrofit

[复制链接]

414

主题

709

帖子

3658

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3658
QQ
发表于 2016-5-23 11:34:19 | 显示全部楼层 |阅读模式
一开始都不知道搜什么,在
安卓网络请求框架对比
http://blog.csdn.net/chenhuakang/article/details/51220067
这里看到Retrofit
git:
https://github.com/square/retrofit
在这里看着比较好:
使用retrofit框架的网络请求方法使用例子,同时+MVP +rxjava + rxandroid使用
http://blog.csdn.net/qq_16628781/article/details/51455320

Retrofit 基本使用教程
http://blog.csdn.net/jiangxuqaz/article/details/50759239

Android应用架构之Retrofit使用
http://blog.csdn.net/liuhongwei123888/article/details/50375283

Android应用架构之Retrofit、RxAndroid使用
http://blog.csdn.net/liuhongwei123888/article/details/50375897


给 Android 开发者的 RxJava 详解【http://gank.io/post/560e15be2dca930e00da1083



  public static void main(String... args) throws IOException {
    // Create a very simple REST adapter which points the GitHub API.
    Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(API_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .build();
        //这里的build,还可以用.client来设置client,如new OkHttpClient.Builder().build()。
        //而OkHttpClient又可以addInterceptor来设置

    // Create an instance of our GitHub API interface.
    GitHub github = retrofit.create(GitHub.class);

    // Create a call instance for looking up Retrofit contributors.
    Call<List<Contributor>> call = github.contributors("square", "retrofit");

    // Fetch and print a list of the contributors to the library.
    List<Contributor> contributors = call.execute().body();
        //这里,直接调用就主线程中了,可以用execute(callback)来处理,也可以用RxAndroid
    for (Contributor contributor : contributors) {
      System.out.println(contributor.login + " (" + contributor.contributions + ")");
    }
  }

我是平方X~
回复

使用道具 举报

414

主题

709

帖子

3658

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3658
QQ
 楼主| 发表于 2016-5-24 09:37:34 | 显示全部楼层
要使用retrofit,
①加
    compile 'com.squareup.retrofit2:retrofit:2.0.2'
    compile 'com.squareup.retrofit2:converter-gson:2.0.2'
这个加,不仅可以直接在gradle中写,可以在module setting中添加,搜索就有最新版了。
注意的是搜rxandroid有,搜rxa就没有了,可能是太短会有太多的搜索结果。
②然后,
// Create a very simple REST adapter which points the GitHub API.
    Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(API_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .build();
这里的build,还可以用.client来设置client,如new OkHttpClient.Builder().build()。
而OkHttpClient又可以addInterceptor来设置
BaseUrl是必须的,且必须是正确的地址

// Create an instance of our GitHub API interface.
    GitHub github = retrofit.create(GitHub.class);

// Create a call instance for looking up Retrofit contributors.
    Call<List<Contributor>> call = github.contributors("square", "retrofit");

List<Contributor> contributors = call.execute().body();
        //这里,直接调用就主线程中了,可以用execute(callback)来处理,也可以用RxAndroid
我是平方X~
回复 支持 反对

使用道具 举报

414

主题

709

帖子

3658

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3658
QQ
 楼主| 发表于 2016-5-24 09:40:49 | 显示全部楼层
要使用rxandroid,


    //加了这个才能用rxandroid,否则会报错Unable to create call adapter for rx.Observable<java.lang.Object>
    compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
    //与retrofit相关的rxandroid
    compile 'io.reactivex:rxandroid:1.1.0'
    compile 'io.reactivex:rxjava:1.1.0'
②创建retrofit时

                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
我一开始没注意这个呢,还以为是adapter的问题
③方法中的返加值改为
Observable
④.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe()
我是平方X~
回复 支持 反对

使用道具 举报

414

主题

709

帖子

3658

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3658
QQ
 楼主| 发表于 2016-5-24 16:14:30 | 显示全部楼层
subscribe
/səb'skraɪb/
vt. 签署;赞成;捐助
vi. 订阅;捐款;认购;赞成;签署

observe
/əb'zɜːv/
vt. 观察;遵守;说;注意到;评论
vt. 庆祝
vi. 观察;说;注意到;评论
我是平方X~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|平方X ( 冀ICP备14018164号 )

GMT+8, 2024-11-24 12:13 , Processed in 0.093289 second(s), 22 queries .

技术支持:Powered by Discuz!X3.4  © 2001-2013 Comsenz Inc.

版权所有:Copyright © 2014-2018 平方X www.pingfangx.com All rights reserved.

快速回复 返回顶部 返回列表