平方X 发表于 2016-5-23 11:34:19

retrofit

一开始都不知道搜什么,在
安卓网络请求框架对比
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 发表于 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 发表于 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 发表于 2016-5-24 16:14:30

subscribe
/səb'skraɪb/
vt. 签署;赞成;捐助
vi. 订阅;捐款;认购;赞成;签署

observe
/əb'zɜːv/
vt. 观察;遵守;说;注意到;评论
vt. 庆祝
vi. 观察;说;注意到;评论
页: [1]
查看完整版本: retrofit