Retrofit+RxJava简单使用(小白专用=-=)

首先老规矩加入所需要的依赖

Retrofit+RxJava简单使用(小白专用=-=)
这里要根据自己的gradle进行适配的依赖,否则会引起不必要的错误!!!
另外Retrofit是基于Okhttp请求,需要进行网络请求,所以这里我们还要加入网络权限:第一条就可以=-=
Retrofit+RxJava简单使用(小白专用=-=)
接下来就是上代码环节了

package com.example.test4_7zfz;

import androidx.appcompat.app.AppCompatActivity;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import rx.Observable;
import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

import android.os.Bundle;
import android.util.Log;

import com.example.test4_7zfz.http.server.GoodsService;
import com.example.test4_7zfz.utils.Constants;
import com.example.test4_7zfz.utils.Entity;


public class MainActivity extends AppCompatActivity {

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

    private void testGetGoodsDetail() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl( Constants.BASE_URL1 )//设置访问网络地址
                .addConverterFactory( GsonConverterFactory.create() )//设置解析方式为Gson
                .addCallAdapterFactory( RxJavaCallAdapterFactory.create() )
                .build();
        GoodsService services = retrofit.create( GoodsService.class );
        Observable<Entity> observable = services.getkey( "488c65f3230c0280757b50686d1f1cd5", "asc", "1418816972" ) ;
        observable.subscribeOn( Schedulers.io() )
                .observeOn( AndroidSchedulers.mainThread() )
                .subscribe( new Observer<Entity>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void one rror(Throwable e) {

                    }

                    @Override
                    public void onNext(Entity entity) {
                        Log.i( "sss", "" + entity.getReason() + "****" + entity.getError_code() + "****" + entity.getResult().getData().toString() );
                    }
                } );



    }
}

接口调用+注解

package com.example.test4_7zfz.http.server;



import com.example.test4_7zfz.utils.Entity;

import java.util.Map;

import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
import rx.Observable;

public interface GoodsService {
    String getUrl = "joke/content/list.php";
    String postUrl = "joke/content/list.php";
    //仅此一个位rxjava封装
    @GET(getUrl)
    Observable<Entity> getkey(
            /**
             *  传递参数的Get请求
             */
            @Query("key") String key,
            @Query("sort") String sort,
            @Query("time") String time
    );
    /**
     * 封装好Url的Get的请求
     *
     * @return
     */
    @GET(getUrl+"?key=488c65f3230c0280757b50686d1f1cd5&&sort=asc&&time=1418816972")
    Call<Entity> get();
    /**
     * 传递Map键值对的Get请求
     **/
    @GET(getUrl)
    Call<Entity> getmap(@QueryMap Map<String, String> params);
    /**传递参数的Post请求
     */
    @FormUrlEncoded
    @POST(postUrl)
    Call<Entity> postkey(@Field("key") String key, @Field("sort") String sort, @Field("time") String time);
    /**
     ** 传递Map键值对的Post请求
     */
    @FormUrlEncoded
    @POST(postUrl)
    Call<Entity> postmap(@FieldMap Map<String, String> map);//





}

建立相应的实体类,利用GsonFormat;

package com.example.test4_7zfz.utils;

import java.io.Serializable;
import java.util.List;

public class Entity implements Serializable {

    @Override
    public String toString() {
        return "Entity{" +
                "reason='" + reason + '\'' +
                ", result=" + result +
                ", error_code=" + error_code +
                '}';
    }

    /**
     * reason : Success
     * result : {"data":[{"content":"昨天下班坐公交车回家,白天上班坐着坐多了想站一会儿,\r\n就把座位让给了一个阿姨,阿姨道谢一番开始和我聊天,聊了挺多的。\r\n后来我要下车了,阿姨热情的和我道别。\r\n下车的一瞬间我回头看了一眼,只见那阿姨对着手机说:\u201c儿子,\r\n刚才遇见一个姑娘特不错,可惜长得不好看,不然我肯定帮你要号码!\u201d\r\n靠,阿姨你下车,我保证不打死你!","hashId":"348e7f933774bcaef3ed3f0ecb8e7b19","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"小时候妈妈喂我饭之前会看书,我问她看的什么时。\r\n妈妈总是笑着告诉我:\u201c是《育儿经验宝典》啊!\u201d\r\n我很感动,直到我认识字才发现,妈妈看的是《猪崽饲养手册》。","hashId":"126a79697167f330f3f2339281ccb8b2","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"刚刚在舞蹈学校外接儿子,听到两个已经接到孩子到妈妈在聊天。\r\n妈妈甲:\u201c你闺女这么小就是个美人胚子,大眼睛,双眼皮,瓜子脸。\u201d\r\n妈妈乙:\u201c是啊,长大了不知道要*多少男孩!\u201d","hashId":"a38339d867e4de601b0d77e3b94de0ab","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"\u201c科学研究发现,睡眠不足会带来许多身心伤害:免疫力下降、\r\n记忆力减弱、易衰老、失去平衡等等,从而引发多种疾病。\r\n从科学角度讲,睡懒觉有助于身心健康。\u201d\r\n\u201c所以,李老师,这就是你在课堂上睡觉的原因?\u201d校长生气的问我。","hashId":"7fda08b4f42baf3868d6963aa5f2e9aa","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"做饭的时候发现没食用油了,\r\n就叫五岁的儿子\u201c娃儿,去楼下小商店买壶油,顺便买点姜回来。别搞忘了。\u201d\r\n儿子答应,边出门边念叨\u201c油,姜,油,姜,油,姜,油\u2026\u2026\u2026\u2026\u201d\r\n果然,回来带了瓶酱油\u2026\u2026","hashId":"650fd02f47de7bc4795248295a6bbde2","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"我妈研究了几个新菜,邀请我品尝,\r\n结果我没有给她一个yes,被臭骂了一顿,\r\n要和我断绝关系。找我爸评理,\r\n老头说为了公平起见,我还是尝尝菜吧。\r\n吃完后,老头幽幽的说道,你和我也断绝关系吧。","hashId":"70fa72fdf6038d5a7fb1e00a4db008ae","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"有一天晚上我俩一起吃西瓜,老大把西瓜籽很整洁的吐在了一张纸上,\r\n过了几天,我从教室回但宿舍看到老大在磕瓜子,\r\n我就问他:老大,你什么时候买的瓜子?\r\n老大说:刚晒好,说着抓了一把要递给我\u2026\u2026","hashId":"c8aa0e4e178fc61fe51d4279cf1df1b3","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":""我女朋友气跑了"\r\n"怎么回事?严重吗?你怎么着她了?"\r\n"不严重,我只是很久没用了"","hashId":"b5deeae99246331671dce4d5f16c7573","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"还说神马来一场说走就走的旅行,\r\n工作后就连一场说走就走的下班都不行","hashId":"ab6bcb72f06adf3c485a19fed3e9addb","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"高速路上堵车,路边葡萄地里有一哥们竟然在偷葡萄,心想太没素质了吧!\r\n不管了我也去,刚溜进葡萄地,那哥们竟问我干嘛,\r\n我撇了一眼反问道你干嘛呢?\r\n那哥们答道摘葡萄呢!\r\n我答道:我也摘葡萄呢!\r\n哥们郁闷了说我摘我家的你呢?\r\n我顿时脸红,哥你家葡萄咋卖呢?","hashId":"82e537f58a90383a3e85a973c3fae2f3","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"和老婆在街边散步,我手上捏着一张已揉成一团的传单,\r\n走了好一会终于看到个垃圾桶,我赶紧跑过去想扔掉,\r\n没想到老婆从后边一把拉住我说:老公,那个肯定吃不得了,别捡。\r\n我一愣,发现垃圾桶顶盖上放着半个西瓜。","hashId":"a434476473e613e43949b9fb2e67496a","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"某考生考了个倒数第一,回到家被他爸一顿暴揍,\r\n来到学校老师让他谈谈落后的体会,\r\n学生:\u201c我终于明白了\u201c落后就要挨打\u201d的道理。\u201d","hashId":"122681bf7fd7a523d1407e802aaa5790","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"很多人不喜欢朝九晚五的生活,然后开始创业。\r\n最终,他的生活变成了朝五晚九。","hashId":"276e0d8ebdf8b42789f58c514b7a8b51","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"钱这个东西,真是害人精。\r\n小到人与人之间的矛盾,大到国家之间的战争,无不是为了钱。\r\n钱可以把人推上万众瞩目之颠,也可以使人瞬间变成阶下囚。\r\n可是,富人们却没认识到,当钱几辈子花不完时,\r\n挣再多已经没有意义,还不如早日尽点社会责任,\r\n捐助给需要的人,求得个平安幸福。\r\n看到这个的有钱人们呐,你们什么时侯能捐我点啊!","hashId":"62cd058131ae047cd76f66f2fdfb7b80","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"看到一句很好的名言:我们无法拉伸生命的长度,但是我们可以拓展生命的宽度。\r\n我觉得这句话太有道理了!\r\n意思就是:虽然我们无法再长高了,但是我们还可以继续长胖。","hashId":"d546a6a3faf6cf5c367aac1205f84407","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"女生口中所说的\u201c理工男好萌好棒好想嫁!\u201d,\r\n其实理工男是指\u201c会修电脑、会设置手机、会安家用电器、\r\n会帮做PPT打EXCEL表PS修图、话少、高冷、专一、不和乱七八糟的女生来往、\r\n不爱打扮却又干净清爽、高高瘦瘦、手指纤长、戴黑框眼镜超好看的帅哥\u201d。\r\n其实找个帅哥让他学电脑,再戴个眼镜就OK了。","hashId":"e3d330e6f7e31df7d99455dbef4e772b","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"\u201c老婆,我想出去玩,\u201d\u201c你去哪玩?\u201d\r\n\u201c我想去凉快的地方还能玩水的地方,\u201d\r\n\u201c没问题,你把空调打开,把卫生间堆的衣服洗了。","hashId":"277ef2566db36a40adf37af3ba164d5d","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"我在网上斗地主,女友在旁边看,问:\u201c斗地主不是三个人玩的吗?\u201d\r\n我说是啊!女友又问:\u201c那怎么上面有四个人的名字,\u201d\r\n我说一个在旁边看的。女友:\u201c那我在你旁边看,怎么没有我的名字?\u201d","hashId":"154ebe2eb9d79d3c30813639ebce9bc9","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"今天去超市,一熊孩纸问我要钱,我一看就知道是坑人的,\r\n就不给。熊孩纸:\u201c好,那你等着。\u201d\r\n我心想大白天你一小逼孩能怎样?去叫人?\r\n我就盯着他看,熊孩纸快走几步到一穿裙子的妹纸那,\r\n二话不说撩起来回头对我喊:\u201c二叔,粉红色的\u201d!","hashId":"1325a29c04ee71154d489b6a97ba7d4f","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"},{"content":"女儿:\u201c妈,我给你买个吸尘器吧,就不用你弯腰扫地了。\u201d\r\n老妈:\u201c不要,浪费钱。\u201d女儿:\u201c我给你买个洗碗机啊,\r\n能省不少事呢。\u201d老妈:\u201c不要,浪费钱。\u201d\r\n女儿:\u201c那你想要什么啊?\u201d\r\n老妈:\u201c什么都不要,这些活你爸都能干。\u201d","hashId":"2b35f672f37ca2cd65aa079d306f7e50","unixtime":1418819032,"updatetime":"2014-12-17 20:23:52"}]}
     * error_code : 0
     */

    private String reason;
    private ResultBean result;
    private int error_code;

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
    }

    public ResultBean getResult() {
        return result;
    }

    public void setResult(ResultBean result) {
        this.result = result;
    }

    public int getError_code() {
        return error_code;
    }

    public void setError_code(int error_code) {
        this.error_code = error_code;
    }

    public static class ResultBean {
        private List<DataBean> data;

        public List<DataBean> getData() {
            return data;
        }

        public void setData(List<DataBean> data) {
            this.data = data;
        }

        public static class DataBean {
            @Override
            public String toString() {
                return "DataBean{" +
                        "content='" + content + '\'' +
                        ", hashId='" + hashId + '\'' +
                        ", unixtime=" + unixtime +
                        ", updatetime='" + updatetime + '\'' +
                        '}';
            }

            /**
             * content : 昨天下班坐公交车回家,白天上班坐着坐多了想站一会儿,
             就把座位让给了一个阿姨,阿姨道谢一番开始和我聊天,聊了挺多的。
             后来我要下车了,阿姨热情的和我道别。
             下车的一瞬间我回头看了一眼,只见那阿姨对着手机说:“儿子,
             刚才遇见一个姑娘特不错,可惜长得不好看,不然我肯定帮你要号码!”
             靠,阿姨你下车,我保证不打死你!
             * hashId : 348e7f933774bcaef3ed3f0ecb8e7b19
             * unixtime : 1418819032
             * updatetime : 2014-12-17 20:23:52
             */

            private String content;
            private String hashId;
            private int unixtime;
            private String updatetime;

            public String getContent() {
                return content;
            }

            public void setContent(String content) {
                this.content = content;
            }

            public String getHashId() {
                return hashId;
            }

            public void setHashId(String hashId) {
                this.hashId = hashId;
            }

            public int getUnixtime() {
                return unixtime;
            }

            public void setUnixtime(int unixtime) {
                this.unixtime = unixtime;
            }

            public String getUpdatetime() {
                return updatetime;
            }

            public void setUpdatetime(String updatetime) {
                this.updatetime = updatetime;
            }
        }
    }
}

还需要数据接口,这里我们用公共类表示

package com.example.test4_7zfz.utils;


/**
 * 常量数据类一般会放一些项目中公共的经常使用的数据。比如网络接口调用时的公共url;
 */
public class Constants {
    //http://v.juhe.cn/joke/content/list.php?key=488c65f3230c0280757b50686d1f1cd5&&sort=asc&&time=1418816972
    public static  String BASE_URL1="http://v.juhe.cn/";

}

完整代码就是以上了。此博客仅用于自己每天学习
最后,感谢阅读,卖个萌o(∩_∩)o 哈哈!`

上一篇:设计模式Copy-on-write


下一篇:手机app端扫描二维码登录web端的解决方法,前后端分离,uniapp,基于token