Java 使用HttpURLConnection获取网易云(我喜欢的音乐)歌单内歌曲

本文介绍了如何使用Java的HttpURLConnection获取网易云音乐的歌单详情,包括获取歌单ID、设置登录状态所需的cookie,以及解析JSON数据获取歌曲信息。示例代码展示了获取歌单名称、歌曲名、歌曲ID、歌手和时长的过程。
摘要由CSDN通过智能技术生成

Java 使用HttpURLConnection获取网易云(我喜欢的音乐)歌单歌单内歌曲

如果不想看前面的逼逼赖赖,可以直接 ——>点击跳转
跳到代码部分。

1.HttpURLConnection简介

JDK的java.net包中提供了访问HTTP协议的基本功能的类:HttpURLConnection
HttpURLConnection的父类为:URLConnection,其是个抽象类,它有两个直接子类分别是HttpURLConnection和JarURLConnection。另外一个重要的类是URL,通常URL可以通过传给构造器一个String类型的参数来生成一个指向特定地址的URL实例。
HttpURLConnection是Java的标准类,它继承自URLConnection,可用于向指定网站发送GET请求、POST请求,也可以根据自身具体需求设置请求头或响应头,并获取目标连接的响应内容。
想要具体了解HttpURLConnection可以查看详解HttpURLConnection

2.前期准备

2.1 目标url

根据其他大佬的发布,我们很容易就可以知道网易云的歌单信息接口为:

https://music.163.com/api/playlist/detail?id=

而id后的参数为要获取的歌单的id。

假设我们要获取歌单为:
在这里插入图片描述

其歌单id为:2294396974的歌单的歌曲,则完整的请求路径url为:
https://music.163.com/api/playlist/detail?id=2294396974
直接访问连接,可以看到返回数据如下:
在这里插入图片描述

复制得到的数据,使用json在线解析网站可以得到:
在这里插入图片描述

对比网易云的歌单内容,可以发现 " result " 下的 " tracks "便是我们需要的歌曲信息数组,说明url接口正确,这个接口也就是我们本次要使用到的接口。

2.2 歌曲ID获得

得到了请求的接口,那我们如何得到我们需要获取的歌单的歌单ID呢?
这个反而是最简单的一步,在网易云官网中点击我们想要获取的歌单,例如:
在这里插入图片描述
点击后在地址栏中,我们可以看到:
在这里插入图片描述
id=5398806550中的5398806550便是歌单的歌单ID
按照这个方法,我们就可以看到自己的歌单中(我喜欢的音乐)的歌单ID。

2.3 uerkey的获取

正常来说,拿到目标url和要请求的歌单ID后,我们就可以开始写代码,但是我们重新回到之前请求得到的歌单json数据,如果对比我们拿到的数据和网易云官网的歌单数据,会发现:接口返回的歌单数据只有前10首歌曲。
在这里插入图片描述

在这里插入图片描述
这显然与我们想获取歌单的所有歌曲的目标不符,其实这个情况的出现是因为我们未登录网易云账号,接口便只能返回前10首歌曲。
那如何让接口认为我们是登录状态呢?

这个时候就要需要我们做一些骚操作了:
打开网易云官网,先退出自己的账号,然后再准备登录自己的账号,我这里是使用的手机账号登录。在登录账号之前,先使用F12打开控制台,这里我用的谷歌浏览器,找到Network选项,先清空之前的日志:
在这里插入图片描述

然后登录自己的网易云账号,登录后在查看日志,找到图中这一条:
在这里插入图片描述
点开下拉,找到set-cookie
在这里插入图片描述
其中,__csrf和MUSIC_U参数就是我们需要的。
在正常的访问中,网易云官网就是通过查看你的cookie中是否有这两个参数来判断你是否已经登录,所以我们需要在请求过程中设置cookie,带上这两个参数。

3.代码实现

好了,现在已经完事具备,可以直接开始代码的编写了,话不多说,直接上代码:

package tools;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class Detail_Get {
   

    publi
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值