Retrofit 2.3使用随文笔录

原创 2017年08月12日 11:54:30
  • 首先创建一个接接口
public interface RetrofitInterface {
//    https://api.douban.com/v2/movie/coming_soon?count=1
    /**豆瓣开放平台:
     * 正常参数拼接
     * */
     //first:第一种
    @GET("movie/coming_soon")
    Call<MovieBean> getMovie (@Query("count") int count);

    /**
     * @param 可以把{in_theaters}单独取出来,调用getMovie1时,可以让用户自己传递进来
     * */
     //second:第二种
    @GET("movie/{in_theaters}")
    Call<WillBean> getMovie1 (@Path("in_theaters") String s, @Query("count") int count);

    /**
     * 传map
     * */
     //three:第三种
    @GET("movie/in_theaters")
    Call<MapBean> getMap (@QueryMap Map<String,String> map);

    /**
     * 请求头:静态添加
     * 实际项目中一个一个接请求头太麻烦可,需要动态配置
     * 我公司真实项目的url地址
     * */
     * //这里的"userid:2820","appsign:1E0C31744A02922BB4B5EA98644A590738"}已改成错的了(公司的怕出啥问题)
    @Headers({"userid:282220","appsign:1E0C31744A02922BB4B5EA98644A59073811"})
    @POST("index/list.do")
    Call<HomeDataMolde> addHeader (@QueryMap Map<String,String> map);

    /*
    * 请求头:动态添加
    *  我公司真实项目的url地址
    * **/
    //four:第四种
    @POST("index/list.do")
    Call<HomeDataMolde> addHeader1 (@QueryMap Map<String,String> map);

}
  • 有请求头和无请求头抽成了两个方法,方便使用
/**无请求头*/
 public static RetrofitInterface retrofitGet() {
        Retrofit builder = new Retrofit.Builder()
                .baseUrl("https://api.douban.com/v2/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        RetrofitInterface retrofitInterface = builder.create(RetrofitInterface.class);
        return retrofitInterface;
    }
 /**
     * 有请求头的
     */
    public static RetrofitInterface retrofitGetAddHead() {
        /**
         * 配置请你求球头
         * */
        //添加拦截器
        OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
            @Override
            public Response intercept(Chain chain) throws IOException {
                Request request = chain.request();
                Request.Builder builder = request.newBuilder();
                //这里userid  appsign 也改成错的了
                Request build = builder.addHeader("userid", "282220")
                        .addHeader("appsign","1E0C31744A02922BB4B5EA98644A59073811")
                        .build();
                return chain.proceed(build);
            }
        }).retryOnConnectionFailure(true)//客户端出现连接性问题时,进行重试
                .build();

        /**
         * addCallAdapterFactory 影响的是 :  Call<HomeDataMolde> addHeader (@QueryMap Map<String,String> map);
         * Call 默认支持的  要想支持Observable  就需要添加addCallAdapterFactory
         * */
        Retrofit builder = new Retrofit.Builder()
                .client(okHttpClient)
                .baseUrl("http://116.62.120.127:8085/")
                .addConverterFactory(GsonConverterFactory.create())
//                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
        RetrofitInterface retrofitInterface = builder.create(RetrofitInterface.class);
        return retrofitInterface;
    }
  • first:第一种
  /**
     *参数作为url的一部分:正常请求(url传参拼接)"
     * */
    public void gethttp(View view) {
        RetrofitUtils.retrofitGet()
                .getMovie(2)
                .enqueue(new Callback<MovieBean>() {
                    @Override
                    public void onResponse(Call<MovieBean> call, Response<MovieBean> response) {
                        tv.setText(response.body().getSubjects().get(1).getTitle());
                        Log.e("Retrofit", response.toString());
                        Log.e("gethttp", response.body().getSubjects().toString());
                    }

                    @Override
                    public void onFailure(Call<MovieBean> call, Throwable t) {

                    }
                });

    }

Log日志:
这里写图片描述

  • second:第二种
/**
     * url:参数拼接  in_theaters用户传递
     * */
    public void getWillStart(View view) {
        RetrofitUtils.retrofitGet()
                .getMovie1("in_theaters",3)
                .enqueue(new Callback<WillBean>() {
                    @Override
                    public void onResponse(Call<WillBean> call, Response<WillBean> response) {
                        Log.e("in_theaters", response.toString());
                        Log.e("第二种:电影名字getWillStart", response.body().getSubjects().get(2).getTitle());
                    }

                    @Override
                    public void onFailure(Call<WillBean> call, Throwable t) {

                    }


                });
    }

Log日志:
这里写图片描述

  • three:第三种

    /**
     * 传递map
     * */
    public void getMap(View view){
        subjects1.clear();
        Map<String,String> map=new HashMap<>();
        map.put("count",String.valueOf(12));
        RetrofitUtils.retrofitGet()
                .getMap(map)
                .enqueue(new Callback<MapBean>() {
                    @Override
                    public void onResponse(Call<MapBean> call, Response<MapBean> response) {
                        Log.e("map", response.toString());
                        MapBean body = response.body();
                        List<SubjectsBean> subjects = body.getSubjects();
                        for (int i=0;i<subjects.size();i++){
                            subjects1.add(subjects.get(i));
                            Log.e("列表集合", subjects1.size()+"...");
                        }
                        Message msg=new Message();
                        msg.what=REGRESH;
                        msg.obj=subjects1;
                        mHandler.sendMessage(msg);
                    }

                    @Override
                    public void onFailure(Call<MapBean> call, Throwable t) {

                    }
                });
    }

log日志:
这里写图片描述

  • four:第四种
 /**
     * 添加header
     * */
    public void addHeader(View view){
        final Map<String,String>map=new HashMap<>();
        map.put("showType","0");
        map.put("pageIndex",String.valueOf(1));
        map.put("pageSize",String.valueOf(10));
        RetrofitUtils.retrofitGetAddHead()
                .addHeader1(map)
                .enqueue(new Callback<HomeDataMolde>() {
                    @Override
                    public void onResponse(Call<HomeDataMolde> call, Response<HomeDataMolde> response) {
                        Log.e("Retrofit请求的url", response.toString());
                        Log.e("Retrofit1000请求成功", response.body().getCode()+".......");
                        List<HomeDataMolde.DataBean> data = response.body().getData();
                        Log.e("Retrofit集合数据长度:", data.size()+".......");
                        Log.e("Retrofit_getNickname", data.get(2).getUserModel().getNickname()+".......");

                    }

                    @Override
                    public void onFailure(Call<HomeDataMolde> call, Throwable t) {

                    }
                });
    }

Log日志:
这里写图片描述

本文没什么讲解,主要是本人学习时的随文笔记!这个框架只需要会用就可以了,没必要非得研究他的原理!

版权声明:本文为博主原创文章,未经博主允许不得转载。

使用Retrofit 在代码混淆后 提示 Last parameter must be of type Callback or Callback

公司项目要结束了,在准备上线前是要做代码混淆的, 可是混淆后确实能生成APK 包,但是发现打开后联网操作的时候会崩溃掉。 先打开DDMS,找到进程的PID,再用LogCat跟踪这个PID ,来看...
  • xiao_wl
  • xiao_wl
  • 2016年03月07日 09:04
  • 1407

Retrofit2、okHttp3、RxAndroid使用

前三篇讲了RxAndroid 、okHttp3 、Retrofit2的使用,接下来就看看这些东西怎么用吧。还记得okHttp和Retrofit中的返回值Call吗,现在我们就是要把它变为RxAndro...
  • hello_1s
  • hello_1s
  • 2017年08月04日 14:11
  • 621

Retrofit2+OkHttp3+RxJava搭建网络框架

Retrofit2+OkHttp3+RxJava搭建网络框架 和别人分享你的知识,那才是永恒之道。之前跟朋友闲聊的时候,从朋友那里知道了安卓的几个最新的框架,其中就包括本博要说的Retrofit...
  • wlt111111
  • wlt111111
  • 2016年05月19日 17:22
  • 15610

Retrofit各个注解的含义及作用

写在前面本篇文章基于retrofit-2.1进行分析.1. 各个注解的含义及使用1.1 Body注解: 作用于方法的参数 使用该注解定义的参数不可为null 当你发送一个post或put请求,但是又不...
  • qiang_xi
  • qiang_xi
  • 2016年12月31日 23:57
  • 9053

Retrofit和RxJava结合使用

使用Retrofit的时候就不得不提到RxJava,RxJava是一个基于观察者模式的异步实现。关于RxJava的入门学习,强烈推荐《给Android开发者的RxJava详解》 https://g...
  • tinyzhao
  • tinyzhao
  • 2016年09月30日 16:12
  • 1259

Retrofit项目封装使用

一、概述1、Retrofit开源项目地址2、Retrofit项目官网上官网可能要梯子,大家自备,官网上有它的一系列基本用法,以及他的介绍:A type-safe HTTP client for And...
  • Zzz_Zzz_Z
  • Zzz_Zzz_Z
  • 2016年07月13日 00:15
  • 4591

Retrofit使用入门

最近几天发现好多朋友都在说Retrofit,在网上找了一些资料研究了一下,参考一些博客写了一个demo。记下来方便自己。 参考:          http://www.open-open.com...
  • Yyongchao
  • Yyongchao
  • 2016年04月25日 09:57
  • 882

随文

              时间就像一条河,永远奔腾不息,发现时间过得真的过的好快,暮然回首,不知不觉中已走过了21个春秋,可是却不知道自己得到了些什么又失去了些什么,不知道自己得到的多还是失去得多,...
  • dandeline
  • dandeline
  • 2010年08月26日 16:30
  • 183

Retrofit+fastjson

Android中广泛应用json解析的三方库有两种:1 Google的Gson(几乎解决所有问题)2 阿里巴巴的fastjson(几乎解决所有问题,数据量很大的时候比gson快)看到了快的优点和阿里产...
  • LosingCarryJie
  • LosingCarryJie
  • 2017年08月21日 21:32
  • 591

Retrofit在项目中的应用

定义一个注解,用来对bean进行要序列化的字段 import java.lang.annotation.Documented; import java.lang.annotation.ElementT...
  • lizelinll
  • lizelinll
  • 2015年01月03日 15:21
  • 40359
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Retrofit 2.3使用随文笔录
举报原因:
原因补充:

(最多只允许输入30个字)