美文网首页
原生态的Retrofit写网络请求

原生态的Retrofit写网络请求

作者: 胡修波 | 来源:发表于2017-07-06 15:58 被阅读0次

源代码路径

https://github.com/huxiubo1980/RetrofitDemoXiubo/

添加依赖

build.gradle添加依赖

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'

接口声明

public interface MovieService {
    /**请求方法*/
    @GET("top250")
    Call<MovieEntity> getTopMovie(@Query("start") int start, @Query("count") int count);
}

调用接口

在MainActivity调用(异步调用)

Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(URL)
                .addConverterFactory(GsonConverterFactory.create()) /** json解析*/
                .build();
        /**这里是interface,so,需要创建一个代理*/
        MovieService movieService = retrofit.create(MovieService.class);
        /**拿到代理对象后就可以调用方法了*/
        Call<MovieEntity> call = movieService.getTopMovie(0, 2);
        call.enqueue(new Callback<MovieEntity>() {
            @Override
            public void onResponse(Call<MovieEntity> call, Response<MovieEntity> response) {
                Log.d(TAG, "respose = " + response.body().getTitle());
                tv.setText(response.body().getTitle());
            }

            @Override
            public void onFailure(Call<MovieEntity> call, Throwable t) {
                Log.d(TAG, "onFailure = " + t.getMessage());
            }
        });

同步调用
try {
    Response<ResponseBody> response = call.execute();
} catch (IOException e) {
    e.printStackTrace();
}

权限申请

  <!-- 网络状态权限 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET"/>

相关文章

网友评论

      本文标题:原生态的Retrofit写网络请求

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