还在使用各种Bean么?还在声明各种接口请求方法吗?
快尝试一下EasyNet吧,一个接口使用一个EasyNetApi对象,只需要定义好你需要请求的EasyNetApi对象,并在回调函数中完成回调就可以了。
从此解放你的双手,走上人生巅峰,迎娶白富美,暗示了这么多,还不快快尝试一下?

Easy全家桶之EasyNet

  • 查看Easy全家桶
  • 使用示例
    • 添加依赖
    • 新建网络类
    • 调用测试Api.class中的接口
      • 接口返回结果
  • 重要步骤
    • 配置回调函数
    • 初始化回调类
  • Api详解
    • EasyNetApi包含请求描述,请求方式,请求URL的请求封装类
    • EasyRequestConfig请求实例类

查看Easy全家桶

使用示例

添加依赖

//build.gradledependencies {...//项目地址:https://github.com/isong0623/EasyNetapi "com.github.isong0623:EasyNet:1.0-core"...
}

新建网络类

import org.json.JSONObject;import okhttp3.Response;
import priv.songxusheng.easyjson.ESON;
import priv.songxusheng.easynet.BindEasyRequestItem;
import priv.songxusheng.easynet.BindEasyRequestMethod;
import priv.songxusheng.easynet.BindEasyResponseMethod;
import priv.songxusheng.easynet.EasyListener;
import priv.songxusheng.easynet.EasyNet;
import priv.songxusheng.easynet.EasyNetApi;
import priv.songxusheng.easynet.EasyRequestConfig;
import priv.songxusheng.easynet.EasyRequestType;public class Api {private final static String baseUrl1 = "http://wthrcdn.etouch.cn/weather_mini";static{ EasyNet.init(Api.class);}//这步及其重要@BindEasyRequestItem//这个注解不作用于反射,只是增强可读性final static EasyNetApi GET_WHEATHER = new EasyNetApi(0,//API idbaseUrl1+"",//URL"获取青岛天气",//请求描述EasyRequestType.GET,//请求类型为Get 其他还有Post,pull,deletenull,null,"city","城市名称");//这个String params[]结构如下: "请求头键名","请求头描述","请求参数名1","请求参数值1描述","请求参数名2","请求参数值2描述"... 哪项为空哪项填null就可以@BindEasyRequestMethod//这个注解不作用于反射,只是增强可读性,方法实现也不是必要的final public static void easyRequest(EasyRequestConfig config, EasyListener listener){EasyNet.easyRequest(config,listener);}//这个接口通用回调处理方法必须为public static 并且参数一定要和下方实现一致@BindEasyResponseMethodfinal public static void easyResponse(EasyNetApi requestItem, Response responseData, EasyListener listener){try {String response = responseData.body().string();switch (requestItem.Id){case 0:JSONObject jsonObject = ESON.getJSONObject(response);listener.onSuccess(200,jsonObject);return;}listener.onSuccess(200,response);} catch (Exception e) {listener.onFailure(400,e);}}
}

调用测试Api.class中的接口

  Api.easyRequest(new EasyRequestConfig(Api.GET_WHEATHER,new String[]{null,"青岛"}), new EasyListener() {@Overridepublic void onSuccess(int code, Object msg) {Log.e("Api",msg+"");}@Overridepublic void onFailure(int code, Object msg) {Log.e("Api",msg+"");}});
接口返回结果
E/Api: {"data":{"yesterday":{"date":"13日星期五","high":"高温 8℃","fx":"东北风","low":"低温 3℃","fl":"<![CDATA[3-4级]]>","type":"多云"},"city":"青岛","forecast":[{"date":"14日星期六","high":"高温 13℃","fengli":"<![CDATA[4-5级]]>","low":"低温 5℃","fengxiang":"西北风","type":"晴"},{"date":"15日星期天","high":"高温 13℃","fengli":"<![CDATA[4-5级]]>","low":"低温 1℃","fengxiang":"西北风","type":"晴"},{"date":"16日星期一","high":"高温 8℃","fengli":"<![CDATA[4-5级]]>","low":"低温 4℃","fengxiang":"西南风","type":"多云"},{"date":"17日星期二","high":"高温 15℃","fengli":"<![CDATA[4-5级]]>","low":"低温 9℃","fengxiang":"西北风","type":"多云"},{"date":"18日星期三","high":"高温 14℃","fengli":"<![CDATA[4-5级]]>","low":"低温 10℃","fengxiang":"南风","type":"晴"}],"ganmao":"昼夜温差大,风力较强,易发生感冒,请注意适当增减衣服,加强自我防护避免感冒。","wendu":"14"},"status":1000,"desc":"OK"}
E/EasyNet: EasyRequest:获取青岛天气->Id:0Url:http://wthrcdn.etouch.cn/weather_miniType:GETHeaders:HttpHeaders{headersMap={}}Params:city=[青岛]Json:null

重要步骤

配置回调函数

@BindEasyResponseMethod//一定要加上这个注解 函数名称可以不同,其他部分一定要保证一致
final public static void easyResponse(EasyNetApi requestItem, Response responseData, EasyListener listener){//在这里边通过requestItem.Id判断你请求的类型//Response中的body就是此次请求返回的数据//处理Response后通过调用EasyListener接口的onSuccess或onFailure返回处理数据
}

初始化回调类

//在接口调用前的任意位置
EasyNet.init(Api.class);//这个类一定要有BindEasyResponseMethod标注的回调函数,只能有一个

Api详解

EasyNetApi包含请求描述,请求方式,请求URL的请求封装类

/**** @param Id API唯一ID* @param url 请求的目标URL* @param desc API说明文档* @param type 请求类型 POST GET PULL DELETE* @param params 请求头和请求参数描述信息* @param params    格式[[请求头部分],[请求参数部分]]* @param params    请求头部分:"请求头key',"对这个key的说明信息" //只有一组,因为大多数只需要传一个Authorization* @param params    请求参数部分:"请求参数key","对这个key的说明信息"//有0到若干组* params示例:"Authorization","鉴权Token","username","手机号","password","密码"* params示例:"Authorization","鉴权Token"* params示例:null,null,"username","手机号","password","密码"* params示例:什么也不写*/public EasyNetApi(int Id, String url , String desc, EasyRequestType type, String...params);

EasyRequestConfig请求实例类

/**** @param api 请求目标* @param values 请求参数对应api.Params* @param values 格式:[[请求头部分][请求参数部分]]* @param values [请求头部分]说明:请求头值//最多只有一组* @param values [请求参数部分]说明:"请求key对应的value"//有0到若干组* @param values 示例:"Bearer JF7890_fdskFDMNA_fd234F4fg_","18888888888","asd123"* @param values 示例:"Bearer JF7890_fdskFDMNA_fd234F4fg_"* @param values 示例:null,"18888888888","asd123"* @param values 示例:什么也不写* 以上示例对应EasyNetApi*/public EasyRequestConfig(EasyNetApi api, String...values)/*** * @param api* @param headers* @param params 该参数类型可为HttpParams或合法的JSONObject(String格式或JSONObject)*/public EasyRequestConfig(EasyNetApi api, HttpHeaders headers, Object params)

EasyNet,更优雅地搭建接口请求及解析网络框架。相关推荐

  1. Python从无到有搭建接口(API)自动化测试框架

    目录 1.前言 2.思路 3.正文 一.路径模块-initPath.py 二.配置文件模块-getConfig.py 三.读取用例模块-getCase.py 四.数据库操作模块-operatorDB. ...

  2. 前端请求接口post_前端如何优雅地模拟接口请求?(给你的代码加点小意外)

    前言: 作为一名前端开发程序猿,每天都被产品经理催着开发,项目一启动,产品就过来了.嘘寒问暖:大胸弟,你啥时开始做啊?一般我们都会直接告诉TA,你先找接口解决数据问题. 而我们也会经常遇见" ...

  3. 接口请求json解析问题

    今天同事问请求公司内部接口返回的json无法用json_decode解析,然后我让他把请求结果写入文件,然后文件发给我试试. 在打开这个文件之后我发现第一句话是 这是很令人奇怪的,为什么会出现一个双引 ...

  4. 转: Springboot — 用更优雅的方式发HTTP请求(RestTemplate详解)

    转自: Springboot - 用更优雅的方式发HTTP请求(RestTemplate详解) - Java知音号 - 博客园RestTemplate是Spring提供的用于访问Rest服务的客户端, ...

  5. NodeJs本地搭建服务器,模拟接口请求,获取json数据

    最近在学习Node.js,虽然就感觉学了点皮毛,感觉这个语言还不错,并且也会一步步慢慢的学着的,这里实现下NodeJs本地搭建服务器,模拟接口请求,获取json数据. 具体的使用我就不写了,这个博客写 ...

  6. 搭建前端监控系统(四)接口请求异常监控篇

    背景:市面上的监控系统有很多,大多收费,对于小型前端项目来说,必然是痛点.另一点主要原因是,功能虽然通用,却未必能够满足我们自己的需求, 所以我们自给自足也许是个不错的办法. 这是搭建前端监控系统的第 ...

  7. 性能测试接口请求超时问题_如何获得更好的性能:超时的情况

    性能测试接口请求超时问题 by Alex Nadalin 通过亚历克斯·纳达林 如何获得更好的性能:超时的情况 (How to get better performance: the case for ...

  8. 接口如何优雅地处理重复请求

    接口如何优雅地处理重复请求 利用唯一请求编号去重 业务参数去重 请求去重工具类,Java实现 总结 对于一些用户请求,在某些情况下是可能重复发送的,如果是查询类操作并无大碍,但其中有些是涉及写入操作的 ...

  9. 如何更优雅地对接第三方API

    如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/ ...

最新文章

  1. 推荐系统产品与算法概述 | 深度
  2. SVN使用之分支、合并
  3. Telegraf+InfluxDB+Grafana快速搭建实时监控系统 监控postgresql
  4. ubuntu首次给root用户设置密码和root用户登录设置
  5. Ext1.X的CheckboxSelectionModel默认全选之后不允许编辑的BUG解决方案
  6. C#编写窗体(Form)常用属性
  7. Verilog 补码加法溢出判断及处理
  8. IOS - UTF-8转码问题
  9. (二)容器从入门到深入-初识Kubernetes
  10. greenplum 查询出来的数字加减日期_常用SQL系列之(八):列值累计、占比、平均值以及日期运算等
  11. android的Handler、Message机制*
  12. Python Pandas模块教程
  13. 通信原理实验(〇):音频信号的播放蒙特卡洛模拟
  14. Git/Gitlab项目开发使用简介
  15. ORAN专题系列-20:5G O-RAN 通过TR-069协议实现一体化小基站的自动配置和安装
  16. 最简单音乐播放器,还有歌词
  17. api—淘宝图片上传
  18. 非洲做项目的务实与务虚
  19. 计算机弹奏卡布奇诺,计算机学院信息安全技术协会卡布奇诺加糖队在第十二届全国大学生信息安全竞赛中喜获佳绩...
  20. History 和 Hash 路由模式

热门文章

  1. 【软件测试】集成测试
  2. 【论文笔记】UNet++:一种用于医学图像分割的嵌套U-Net结构
  3. 读《高效能人士的七个习惯》笔记
  4. 阿西莫机器人价格_ASIMO(阿西莫):Honda全球最先进的类人型机器人
  5. bootstrap select API
  6. Error creating bean with name解决
  7. 预计明年通车|我国首条跨海高铁—福厦高铁,主体工程全线贯通
  8. 云服务提供商现状调查
  9. Python——selenium自动点击下载腾讯文档
  10. 白天,你陪我黑龙潭戏水观瀑;夜晚,我陪你云蒙山数星看月