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框架简单学习使用(举例:酷狗搜索和歌曲详情接口)相关推荐

  1. Retrofit + Rxjava框架学习使用(举例:酷狗搜索和详情接口)

    在我上一篇博客Retrofit框架简单学习使用基础上修改. 依赖: dependencies {implementation 'com.squareup.retrofit2:retrofit:2.5. ...

  2. Duilib学习之仿酷狗开发(2)

    今天有时间了接着Duilib学习之仿酷狗开发(1),先说下我遇到的无问题和解决方法,我用的界面库是从Githut上下载的其中有些是需要使用者自己修改的,比如库Demo中有个QQ的Demo搜索好友信息使 ...

  3. 酷狗音乐web端API接口数据

    酷狗音乐web端API接口数据 发表于 2017-07-16 | 分类于 api 酷狗音乐web端API接口数据分析 酷狗音乐Web端音乐API接口数据整理,以下接口数据已整理封装在我的基于Node. ...

  4. python爬取音乐排行_Python爬取酷狗Top500的歌曲!够你吹个小牛皮了吧

    一.准备工作 安装 requests 库和 beautifulsoup4 库: requests 库是处理HTTP请求的一个简洁且简单的第三方库:beautifulsoup4 库是一个解析和处理HTM ...

  5. Python爬取酷狗Top500的歌曲

    文章目录 文章目录 文章目录 一.准备工作 二.对网站HTML源码进行分析 三.爬取酷狗Top500的歌曲 一.准备工作 安装 requests 库和 beautifulsoup4 库: pip in ...

  6. 酷狗免费下载歌曲(网易云同样适用)

    打开酷狗音乐-播放歌曲 f12打开网页源码 选择network-media-连续按键f5直到出现mp3链接 打开链接-点击三点-下载

  7. android酷狗缓存目录,酷狗缓存的歌曲在哪个文件夹_酷狗音乐缓存的歌曲在电脑哪个目录-win7之家...

    酷狗是一款很流行的音乐播放软件,当我们在听歌曲的时候,默认会缓存到文件夹中,方便下次没有网络的时候可以继续听这首歌,有些用户想要知道酷狗缓存的歌曲在哪个文件夹,我们可以从主界面中进入即可找到,接下来给 ...

  8. 如何把酷狗音乐复制在计算机,酷狗怎么复制歌曲链接?酷狗复制歌曲链接的方法...

    酷狗音乐是我们在平时生活中经常使用的一款音乐播放软件,那你知道酷狗怎么复制歌曲链接的吗?接下来我们一起往下看看酷狗复制歌曲链接的方法吧. 方法步骤 电脑端: 1.登录酷狗音乐,进入音乐主界面: 2.然 ...

  9. 2023 API酷狗音乐MV直链解析接口源码

    源码介绍: 酷狗音乐MV解析api接口源码,可搜索输出封面图,MV名字,MV作者,MP4播放直链. 调用参数: 域名/kg_mv.PHP?msg=9420

最新文章

  1. 目标定位--Deep Self-Taught Learning for Weakly Supervised Object Localization
  2. 解决编译不通过Could not find support-compat.aar (com.android.support:support-compat:26.0.0).
  3. Linux下which、whereis、locate、find 命令的区别
  4. 在MonoTouch中正确而简单的使用 Sqlite 数据库
  5. 一夜抢空880万!中国最狠印钞机,终于开始收割年轻人了
  6. sf | 读取和保存空间矢量数据
  7. Ztree勾选节点后取消勾选其父子节点
  8. android 常用依赖库
  9. soltrace教程(2)旧版本项目导入新版本
  10. 使用 New Relic 监控接口服务性能 (APM)
  11. 让对应背景随着轮播的图片变化而改变
  12. linux根据文件内容查找文件名,linux在当前目录下根据文件名查找文件
  13. linux+暂停运行,如何暂停和继续运行Linux程序
  14. 上海跳槽后 如何进行公积金转移?
  15. AutoCAD Civil 3D笔记
  16. 3W+2H:学习和思考问题的有效方式
  17. @Transactional注解怎么使用?
  18. 英语基础语法(十二)-虚拟语气
  19. java jbutton 禁用_为什么JButton不能禁用,大侠们进来看看
  20. RibbonControl

热门文章

  1. metasploit简单使用:复现永恒之蓝
  2. 永恒之蓝黑脏牛提权范围
  3. 使用 Arya 在线 Markdown 编辑器
  4. 计算机怎么调节音乐模式,电脑音频管理器怎么设置,教你电脑音频管理器怎么设置...
  5. 统一自己的mac和linux环境的终端使用(alacritty+tmux代替iterm2)
  6. 117年的老商场也直播卖货了:活下来,再谈创造纪录!
  7. “简直把我们‘往死里日’啊”——自动驾驶公司CEO眼里的量产交付之痛
  8. 天地图 android studio,AndroidStudio 加载 天地图 (2019年后开发授权申请)
  9. adm-zip-0.4.13-中文文档
  10. 解决:org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild