最近在做一个仿网易云音乐的APP,需要通过网络获取歌曲以及歌词,于是做了这些API整合,这里面的都是我测试过能够获取到信息的API,写这篇博客为了备份与分享。

先说API来源,来自这篇博客:网易云音乐常用API

我们使用Volley来解析处理网络请求,由于返回的是Json,所以我们使用Gson来解析返回数据。

实现

Volley下载以及使用地址:Volley使用指南以及下载

Gson.jar下载地址:Gson.jar

使用方法:

AS中拷贝类库文件到libs文件夹下,然后右键类库文件选择Add as Library。

下面附上工具类代码:

1.获取RequestQueue实例:

package winter.zxb.smilesb101.testdemo;
import android.content.Context;import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;import org.json.JSONObject;/*** 网络通信工具类* Created by SmileSB101 on 2016/11/1 0001.*/public class InternetUtil{/*** 网络请求队列*/private static RequestQueue mRequestqueue;public static RequestQueue getmRequestqueue(Context context){if(mRequestqueue == null){mRequestqueue = Volley.newRequestQueue(context);return mRequestqueue;}else{return mRequestqueue;}}
}

2.网络请求处理类

package winter.zxb.smilesb101.testdemo;import android.content.Context;
import android.util.Log;
import android.util.StateSet;import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;import org.json.JSONException;
import org.json.JSONObject;/*** 音乐网络类* Created by SmileSB101 on 2016/11/1 0001.*/public class MusicNetWork{/*** 网易音乐搜索API* http://s.music.163.com/search/get/* 获取方式:GET* 参数:* src: lofter //可为空* type: 1* filterDj: true|false //可为空* s: //关键词* limit: 10 //限制返回结果数* offset: 0 //偏移* callback: //为空时返回json,反之返回jsonp callback* @param s* @param context* @return* 注意废数字才用‘’符号,要不不能用,否则出错!!*/public static void SearchMusic(Context context,String s,int limit,int type,int offset){String url = UrlConstants.CLOUD_MUSIC_API_SEARCH + "type="+type+"&s='" + s + "'&limit="+limit+"&offset="+offset;RequestQueue requestQueue = InternetUtil.getmRequestqueue(context);StringRequest straingRequest = new StringRequest(url,new Response.Listener<String>(){@Overridepublic void onResponse(String s){try {JSONObject json = new JSONObject(s);Log.i("onResponse: ",json.toString());} catch(JSONException e) {e.printStackTrace();}}},new Response.ErrorListener(){@Overridepublic void onErrorResponse(VolleyError volleyError){Log.i("onResponse: ",volleyError.toString());}});requestQueue.add(straingRequest);}/*** 网易云音乐歌曲信息API* @param context* @param id 歌曲id* @param ids 用[]包裹起来的歌曲id 写法%5B %5D* @return*/public static void Cloud_Music_MusicInfoAPI(Context context,String id,String ids){String url = UrlConstants.CLOUD_MUSIC_API_MUSICINGO + "id="+id+"&ids=%5B"+ids+"%5D";RequestQueue requestQueue = InternetUtil.getmRequestqueue(context);StringRequest straingRequest = new StringRequest(url,new Response.Listener<String>(){@Overridepublic void onResponse(String s){try {JSONObject json = new JSONObject(s);Log.i("onResponse: ",json.toString());} catch(JSONException e) {e.printStackTrace();}}},new Response.ErrorListener(){@Overridepublic void onErrorResponse(VolleyError volleyError){Log.i("onResponse: ",volleyError.toString());}});requestQueue.add(straingRequest);}/*** 获取歌曲歌词的API*URL:GET http://music.163.com/api/song/lyric必要参数:id:歌曲IDlv:值为-1,我猜测应该是判断是否搜索lyric格式kv:值为-1,这个值貌似并不影响结果,意义不明tv:值为-1,是否搜索tlyric格式* @param context* @param os* @param id*/public static void Cloud_Muisc_getLrcAPI(Context context,String os,String id){String url = UrlConstants.CLOUD_MUSIC_API_MUSICLRC + "os="+os+"&id="+id+"&lv=-1&kv=-1&tv=-1";RequestQueue requestQueue = InternetUtil.getmRequestqueue(context);StringRequest straingRequest = new StringRequest(url,new Response.Listener<String>(){@Overridepublic void onResponse(String s){try {JSONObject json = new JSONObject(s);Log.i("onResponse: ",json.toString());} catch(JSONException e) {e.printStackTrace();}}},new Response.ErrorListener(){@Overridepublic void onErrorResponse(VolleyError volleyError){Log.i("onResponse: ",volleyError.toString());}});requestQueue.add(straingRequest);}/*** 获取歌单的API* @param context* @param id 歌单ID*/public static void Cloud_Muisc_MusicListSearch(Context context,String id){String url = UrlConstants.CLOUD_MUSIC_API_MUSICLIST + "id="+id+"&updateTime=-1";RequestQueue requestQueue = InternetUtil.getmRequestqueue(context);StringRequest straingRequest = new StringRequest(url,new Response.Listener<String>(){@Overridepublic void onResponse(String s){try {JSONObject json = new JSONObject(s);Log.i("onResponse: ",json.toString());} catch(JSONException e) {e.printStackTrace();}}},new Response.ErrorListener(){@Overridepublic void onErrorResponse(VolleyError volleyError){Log.i("onResponse: ",volleyError.toString());}});requestQueue.add(straingRequest);}public static JSONObject json = null;public static JSONObject getInfoFromUrl_Volley(String url,Context context){json = null;RequestQueue requestQueue = InternetUtil.getmRequestqueue(context);StringRequest straingRequest = new StringRequest(url,new Response.Listener<String>(){@Overridepublic void onResponse(String s){try {json = new JSONObject(s);Log.i("onResponse: ",json.toString());} catch(JSONException e) {e.printStackTrace();}}},new Response.ErrorListener(){@Overridepublic void onErrorResponse(VolleyError volleyError){Log.i("onResponse: ",volleyError.toString());}});requestQueue.add(straingRequest);return json;}public class UrlConstants {/*** 云音乐搜索API网址*/public static final String CLOUD_MUSIC_API_SEARCH = "http://s.music.163.com/search/get/?";/*** 歌曲信息API网址*/public static final String CLOUD_MUSIC_API_MUSICINGO = "http://music.163.com/api/song/detail/?";/*** 获取歌曲的歌词*/public static final String CLOUD_MUSIC_API_MUSICLRC = "http://music.163.com/api/song/lyric?";/*** 获取歌单*/public static final String CLOUD_MUSIC_API_MUSICLIST = "http://music.163.com/api/playlist/detail?";}
}

调用类:

package winter.zxb.smilesb101.testdemo;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;public class MainActivity extends AppCompatActivity implements View.OnClickListener{private Button NetWorkTest;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);NetWorkTest = (Button)findViewById(R.id.NetWorkTest);NetWorkTest.setOnClickListener(this);}@Overridepublic void onClick(View v){switch(v.getId()){case R.id.NetWorkTest://网络测试Log.i("进入","onClick: ");//MusicNetWork.SearchMusic(this,"光荣",10,1,0);//MusicNetWork.Cloud_Music_MusicInfoAPI(this,"26562231","26562231");//MusicNetWork.Cloud_Muisc_getLrcAPI(this,"pc","26562231");MusicNetWork.Cloud_Muisc_MusicListSearch(this,"37880978");break;}}
}

源码我已经上传到CSDN(但是源码相对于没有那么全,但是道理是一样的):源码地址

安卓 网易云音乐能用的API相关推荐

  1. 网易云音乐PC客户端加密API逆向解析

    1.前言 网上已经有大量的web端接口解析的方法了,但是对客户端的接口解析基本上找不到什么资料,本文主要分析网易云音乐PC客户端的API接口交互方式. 通过内部的代理设置,使用fiddler作为代理工 ...

  2. 网易云音乐随机歌曲调用API接口

    接口地址:https://api.uomg.com/api/rand.music 返回格式:json/mp3 请求方式:get/post 请求示例:https://api.uomg.com/api/r ...

  3. 网易云短信php接口,网易云音乐简单API

    重要:本文最后更新于2018-01-22 12:55:40,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗. 由于未找到网易云音乐官方公布的API(反正我没找到),这里的API都是通过 ...

  4. 网易云音乐热评API抓取源码

    源码介绍: 网易云音乐热门评论随机API接口纯源码,随机热评. 标准链接格式为:xxx.com/xxx.php?format=text Json数据输出格式:xxx.xxx/xxx.php?forma ...

  5. python网易云听歌时长_用Python爬取10w条网易云音乐热评并进行分析的方法总结

    有个段子讲"十年文案老司机,不如网易评论区,网易文豪遍地走,评论全部单身狗",网易云音乐的评论区也一直都是各类文案大神的聚集地. 那么我们普通用户到底如何成为网易云音乐评论里的热评 ...

  6. 网易云音乐用户信息爬取以及可视化

    选的课程方向是爬取网易云音乐某首歌曲的用户评论内容和评论时间,观察每天哪个时间段的评论信息最多,每周哪天的评论信息最多.然后分析该歌曲的用户性别分布和年龄分布.所以首先需要通过爬虫来爬取评论信息和用户 ...

  7. HTML+CSS+JAVASCRIPT 高仿低配网页版网易云音乐播放器 1

    HTML+CSS+JAVASCRIPT 高仿低配网页版网易云音乐播放器 前言 没有使用任何框架,只是想用最简单纯js的代码实现下 前台: Javascript+jQuery 后台: php/nodej ...

  8. 基于QT搭建的网易云音乐

    用QT实现的网易云音乐,目前实现的功能有: 1.本地音乐扫描与播放. 2.使用的Binaryify/NeteaseCloudMusicApi作为api,链接部署在本地的网易云音乐服务器,通过API播放 ...

  9. python爬取网易云音乐歌曲评论信息

    网易云音乐是广大网友喜闻乐见的音乐平台,区别于别的音乐平台的最大特点,除了"它比我还懂我的音乐喜好"."小清新的界面设计"就是它独有的评论区了------各种故 ...

最新文章

  1. java怎么表示log2_Java程序员修炼之道 之 Logging(2/3) - 怎么写Log
  2. 从计算机视觉的小白变为大神,你需要经历这七个阶段
  3. 如何用纯 CSS 创作一个方块旋转动画
  4. 【干货】实用案例|产品设计中的恰到好处
  5. golang+数据库定时任务
  6. border-image图片边框
  7. 【POJ - 2186】Popular Cows (Tarjan缩点)
  8. Could not create the view: An unexpected exception was thrown.
  9. TCP、UDP绑定同一端口通信的解释-转
  10. 基于 wke 的浏览器:如何实现 js 和 c++ 的互相调用
  11. Flash builder 4.6 下载 破解 序列号【你懂的】
  12. php+实现群发微信模板消息_php实现微信模板消息推送
  13. vue项目引用美图秀秀图片编辑器
  14. SQL AlawaysOn 之三:SQL服务器加入域
  15. python机器人编程——差速机器人小车的控制,控制模型、轨迹跟踪,轨迹规划、自动泊车(上)
  16. 13位巴克码二相相位编码模糊图
  17. 以太坊DApp开发入门教程——Node.js和truffle框架打造区块链投票系统
  18. 【算法学习笔记】寒假打卡1——数组
  19. java UDP通信程序DatagramSocket数据发送
  20. 记一次凉凉的小米前端面试

热门文章

  1. Windows10自动登录的设置
  2. java arraycopy 实现_java的system.arraycopy()方法
  3. Java实现蓝桥杯方格计数
  4. 崩坏三 - 武器 - 童谣 NPR渲染分析
  5. 安卓linux免root权限,手机免root安装Linux发行版 Termux v0.106+Tmoe-linux
  6. Pico SDK在Unity中如何控制移动
  7. 图为科技-推出5G移动边缘计算盒子 AI智能MEC设备
  8. React Native 的未来与React Hooks
  9. [万字综述] 21年最新最全Graph Learning算法,建议收藏慢慢看
  10. 微信5秒超时 php异步,微信小程序网络超时怎么办?