文档章节

retrofit使用随记

东西南瓜西葫芦
 东西南瓜西葫芦
发布于 2016/10/18 11:51
字数 390
阅读 32
收藏 0

1.请求接口

public interface RetrofitApi {
    /*注册*/
    /*登录*/
    @FormUrlEncoded    //post请求带这个
    @POST("url")
    Call<User> login(@Field("json") JSONObject jsonObject);
     //因为我是使用的jsonobject所以使用@Filed,其他的参照网上的例子,google
     //还有填写字段的方式,这是封装json
     //User是返回数据的实体类
    /*Web*/
    @GET("url")
    Call<ResponseBody> getWebData();
    //String返回类型用ResponseBody

    /*注解url*/
    @GET
    Call<ResponseBody> getInfo(@Url String url);
}

2.使用:每个call只能执行一次,可以每次都重新获取,也可以通过克隆call.clone()获取一个新的执行;

String(get) 返回值

Call<ResponseBody> call = ...;//封装之类网上搜索
if (type == 1){
            call = ApiFactory.getLiangCaiApi().getWebData();//获取相应的call
            call.enqueue(new Callback<ResponseBody>() {
                @Override
                public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                    ResponseBody bodys = response.body();//获取的是返回值的实体类对象,User user = response.body();
                    //response.body().bytes获取的是byte数组,(比如下载的图片)如果是下载东西(这里是图片)
                    bodys.string;//获取数据(String)
                }

                @Override
                public void onFailure(Call<ResponseBody> call, Throwable t) {
                    showToast("失败");
                }
            });
        }else {
            call = ApiFactory.getLiangCaiApi().getWebData(getWebUrl());
            call.enqueue(new Callback<ResponseBody>() {
                @Override
                public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                    
                }

                @Override
                public void onFailure(Call<ResponseBody> call, Throwable t) {
                    showToast("失败");
                }
            });
        }

post

Call<LoginBean> call;
call = call = ApiFactory.getRetrofitApi().login(getJson());
        call.enqueue(new CallBack<LoginBean>() {
            @Override
            public void onResponse(LoginBean result) {
                //result  实体类对象
            }

            @Override
            public void onFailure(String error) {

            }
        });
/**
     * post请求
     * */
    JSONObject jObject;
    private JSONObject getJson() {
        jObject = new JSONObject();
        try {
            jObject.put("name", "111");
            jObject.put("password", "123456");
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return jObject;
    }

3.自定义CallBack

自定义一个自己的MyCallBack继承CallBack

可以通过多态的方式(实体类的基类)在自定义的CallBack里预先处理一些内容

单纯的retrofit,没有使用rxjava

© 著作权归作者所有

东西南瓜西葫芦
粉丝 1
博文 23
码字总数 7490
作品 0
临沂
程序员
私信 提问
Android - 网络请求之 WebService讲解

老婆保佑,代码无BUG 前言 现在做android 的小伙伴可能网络请求用的都是OKHttp,Retrofit,什么的 数据解析都是JSON,但是我就遇到了,WebService,虽然是有点过时的技术,但是谁叫我遇到了呢...

Allens_Jiang
2018/01/02
0
0
Android技能树 — 网络小结(7)之 Retrofit源码详细解析

前言: 哈哈,其实写的还是很水,各位原谅我O(∩_∩)O。 介于自己的网络方面知识烂的一塌糊涂,所以准备写相关网络的文章,但是考虑全部写在一篇太长了,所以分开写,希望大家能仔细看,最好...

青蛙要fly
2018/12/24
0
0
retrofit,okhttp

Android RxJava+Retrofit2+RxBinding RxJava+Retrofit2+RxBinding 笔记 MVP + Rxjava + Retrofit 构建项目 2015 年最值得 Android 程序猿去学习的就是 RxJava 了,关于 RxJava 就不再多描述了......

掘金官方
2018/01/11
0
0
Retrofit简介

首先分享一首最近很喜欢的歌,可惜简书不支持嵌入ifram。所以分享链接,不能在看文章的页面听了。 All The Time Tips 众所周知,Retrofit、RxJava对于Android开发比较火。所以大家都开始用这...

乐小文
2017/03/08
0
0
带你一起探究Retrofit 源码,让你不再畏惧Retrofit的面试提问

Retrofit,OkHttp,Okio Square 安卓平台网络层三板斧源码学习 基于 retrofit 2.4.0-SNAPSHOT 版本 retrofit github 地址 : Retrofit 是 Square 安卓平台网络层三板斧最后一个项目,Retrofi...

codeGoogle
2017/12/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 脚本引擎入门

Java Script Engine Java 脚本引擎可以将脚本嵌入Java代码中,可以自定义和扩展Java应用程序,自JDK1.6被引入,基于Rhino引擎,JDK1.8后使用Nashorn引擎,支持ECMAScript 5,但后期还可能会换...

阿提说说
43分钟前
5
0
05.深入浅出索引(下)

在下面这个表T中,如果我们执行select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行? mysql> create table T ( id int primary key, k int not null default...

scgaopan
昨天
6
0
设计模式-中介者模式

设计模式-中介者模式 定义 用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互 UML 组成部分主要包含 Mediat...

木本本
昨天
5
0
Python 周刊第 418 期

新闻 PyCon US 2020 开始接受财务赞助! https://pycon.blogspot.com/2019/10/financial-aid-launches-for-pycon-us-2020.html2020年 Python 美国开发者大会,tips: 中国也有,可以赞助国内的...

iCodeBugs
昨天
5
0
ThreadLocal源码阅读

首先,从set方法入手, // ThreadLocalpublic void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t);//这里可以看出,从Threa......

小海bug
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部