Retrofit框架简单学习使用(举例:酷狗搜索和歌曲详情接口)
2019.09.24
说明:获取歌曲详情接口已失效,大家可根据自己实际url来测试。
首先先看效果图:
然后上Retrofit的注解表:(图片转自简书:https://www.jianshu.com/p/a3e162261ab6)
然后开始前期工作:
依赖:
dependencies { implementation 'com.squareup.retrofit2:retrofit:2.5.0'// Retrofit库 implementation "com.squareup.retrofit2:converter-gson:2.5.0"// gson库
}
权限:
<uses-permission android:name="android.permission.INTERNET"/>
开始举例:
1、接口:
a、酷狗的搜索:http://mobilecdn.kugou.com/api/v3/search/song?format=json&keyword=歌名&page=1&pagesize=20
b、酷狗歌曲详情:http://m.kugou.com/app/i/getSongInfo.php?cmd=playInfo&hash=上面搜索的歌曲的hash值
2、首先准备好装返回数据的实体类(访问这个接口,然后复制返回的json数据在让android studio自动生成gson格式实体,字段比较多,这里就不举例出来了,详情看GitHub的demo或者下一篇Retrofit+Rxjava文章的实体类部分)
3、抽象接口工具类:
public interface RequestInterface {//第一个为搜索接口@GET("song?format=json")Call<KugouSearch> searchKugou(@QueryMap Map<String,Object> map);//第二个为歌曲详情接口@FormUrlEncoded@POST("getSongInfo.php?cmd=playInfo")Call<KugouDetail> getDetail(@Field("hash") String hash);
}
4、acivity中调用搜索方法
//用Retrofit拿到RequestInterface类的实体
Retrofit retrofit = new Retrofit.Builder().baseUrl("http://mobilecdn.kugou.com/api/v3/search/").addConverterFactory(GsonConverterFactory.create()).build();
RequestInterface requestInterface = retrofit.create(RequestInterface.class);//封装数据
Map<String,Object> map = new HashMap(3);
map.put("keyword","最爱");
map.put("page",1);
map.put("pagesize",10);//调用接口方法
Call<KugouSearch> call = requestInterface.searchKugou(map);//成功和失败的回调
call.enqueue(new Callback<KugouSearch>() {@Overridepublic void onResponse(Call<KugouSearch> call, Response<KugouSearch> response) {//response.body()就是返回的KugouSearch实体的数据//do something//demo中是把搜索到的歌曲放到listview中列出来,然后点击单个item响应获取详情的方法}@Overridepublic void onFailure(Call<KugouSearch> call, Throwable t) {Log.e("myout", "onFailure: "+t.getMessage());Toast.makeText(MainActivity.this, "失败:"+t.getMessage(), Toast.LENGTH_SHORT).show();}
});
5、获取详情的方法,同理:
//http://m.kugou.com/app/i/getSongInfo.php?cmd=playInfo&hash=CB7EE97F4CC11C4EA7A1FA4B516A5D97
Retrofit retrofit = new Retrofit.Builder().baseUrl("http://m.kugou.com/app/i/").addConverterFactory(GsonConverterFactory.create()).build();
RequestInterface requestInterface = retrofit.create(RequestInterface.class);
requestInterface.getDetail(list.get(position).getHash()).enqueue(new Callback<KugouDetail>() {@Overridepublic void onResponse(Call<KugouDetail> call, Response<KugouDetail> response) {//response.body()就是KugouDetail//do something//demo里面是弹AlertDialog框显示主要字段的值}@Overridepublic void onFailure(Call<KugouDetail> call, Throwable t) {Toast.makeText(MainActivity.this, "获取失败:"+t.getMessage(), Toast.LENGTH_LONG).show();}
});
最后上demo地址:GitHub
下一篇在这一篇的基础上修改成Retrofit+Rxjava的简单学习使用
Retrofit框架简单学习使用(举例:酷狗搜索和歌曲详情接口)相关推荐
- Retrofit + Rxjava框架学习使用(举例:酷狗搜索和详情接口)
在我上一篇博客Retrofit框架简单学习使用基础上修改. 依赖: dependencies {implementation 'com.squareup.retrofit2:retrofit:2.5. ...
- Duilib学习之仿酷狗开发(2)
今天有时间了接着Duilib学习之仿酷狗开发(1),先说下我遇到的无问题和解决方法,我用的界面库是从Githut上下载的其中有些是需要使用者自己修改的,比如库Demo中有个QQ的Demo搜索好友信息使 ...
- 酷狗音乐web端API接口数据
酷狗音乐web端API接口数据 发表于 2017-07-16 | 分类于 api 酷狗音乐web端API接口数据分析 酷狗音乐Web端音乐API接口数据整理,以下接口数据已整理封装在我的基于Node. ...
- python爬取音乐排行_Python爬取酷狗Top500的歌曲!够你吹个小牛皮了吧
一.准备工作 安装 requests 库和 beautifulsoup4 库: requests 库是处理HTTP请求的一个简洁且简单的第三方库:beautifulsoup4 库是一个解析和处理HTM ...
- Python爬取酷狗Top500的歌曲
文章目录 文章目录 文章目录 一.准备工作 二.对网站HTML源码进行分析 三.爬取酷狗Top500的歌曲 一.准备工作 安装 requests 库和 beautifulsoup4 库: pip in ...
- 酷狗免费下载歌曲(网易云同样适用)
打开酷狗音乐-播放歌曲 f12打开网页源码 选择network-media-连续按键f5直到出现mp3链接 打开链接-点击三点-下载
- android酷狗缓存目录,酷狗缓存的歌曲在哪个文件夹_酷狗音乐缓存的歌曲在电脑哪个目录-win7之家...
酷狗是一款很流行的音乐播放软件,当我们在听歌曲的时候,默认会缓存到文件夹中,方便下次没有网络的时候可以继续听这首歌,有些用户想要知道酷狗缓存的歌曲在哪个文件夹,我们可以从主界面中进入即可找到,接下来给 ...
- 如何把酷狗音乐复制在计算机,酷狗怎么复制歌曲链接?酷狗复制歌曲链接的方法...
酷狗音乐是我们在平时生活中经常使用的一款音乐播放软件,那你知道酷狗怎么复制歌曲链接的吗?接下来我们一起往下看看酷狗复制歌曲链接的方法吧. 方法步骤 电脑端: 1.登录酷狗音乐,进入音乐主界面: 2.然 ...
- 2023 API酷狗音乐MV直链解析接口源码
源码介绍: 酷狗音乐MV解析api接口源码,可搜索输出封面图,MV名字,MV作者,MP4播放直链. 调用参数: 域名/kg_mv.PHP?msg=9420
最新文章
- 目标定位--Deep Self-Taught Learning for Weakly Supervised Object Localization
- 解决编译不通过Could not find support-compat.aar (com.android.support:support-compat:26.0.0).
- Linux下which、whereis、locate、find 命令的区别
- 在MonoTouch中正确而简单的使用 Sqlite 数据库
- 一夜抢空880万!中国最狠印钞机,终于开始收割年轻人了
- sf | 读取和保存空间矢量数据
- Ztree勾选节点后取消勾选其父子节点
- android 常用依赖库
- soltrace教程(2)旧版本项目导入新版本
- 使用 New Relic 监控接口服务性能 (APM)
- 让对应背景随着轮播的图片变化而改变
- linux根据文件内容查找文件名,linux在当前目录下根据文件名查找文件
- linux+暂停运行,如何暂停和继续运行Linux程序
- 上海跳槽后 如何进行公积金转移?
- AutoCAD Civil 3D笔记
- 3W+2H:学习和思考问题的有效方式
- @Transactional注解怎么使用?
- 英语基础语法(十二)-虚拟语气
- java jbutton 禁用_为什么JButton不能禁用,大侠们进来看看
- RibbonControl
热门文章
- metasploit简单使用:复现永恒之蓝
- 永恒之蓝黑脏牛提权范围
- 使用 Arya 在线 Markdown 编辑器
- 计算机怎么调节音乐模式,电脑音频管理器怎么设置,教你电脑音频管理器怎么设置...
- 统一自己的mac和linux环境的终端使用(alacritty+tmux代替iterm2)
- 117年的老商场也直播卖货了:活下来,再谈创造纪录!
- “简直把我们‘往死里日’啊”——自动驾驶公司CEO眼里的量产交付之痛
- 天地图 android studio,AndroidStudio 加载 天地图 (2019年后开发授权申请)
- adm-zip-0.4.13-中文文档
- 解决:org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild