1 问题起因
一个项目需要用到线上数据,所以抓取qq音乐歌手数据。当然 肯定要写代理的。
代理代码如下
但是我在使用代理的情况下
给我返回 code : -500001 ts : 1542443107469
这说明 你能调用接口但是抓不到数据
2.错误分析
出现code : -500001 ts : 1542443107469 这种错误 一定是你的jsonp里面的字符串参数没配对错误
但是我所有的参数都是对着qq音乐那边搬过来的 应该不可能出现参数没配对成功的情况
以下是qq音乐的参数
在我反复的调试与qq音乐进行对比的时候 终于发现了问题所在
上面是qq音乐的网址 下面是我们本地代理的网址 可以发现 data之前的参数是一样的 而data里的参数和qq音乐的不一样 但是我们所有的json里面所有的参数都是对着qq音乐搬过来的 为什么会出现这种情况呢。
3.了解序列化对象
我在查了很久资料之后。 一次又一次的调试 终于解决了这个问题。首先我们要了解序列化对象
1.对象序列化是什么
:序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
2.为什么要序列化
:当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为对象。 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。
说白了就是为了保证数据传输的安全性,以免发生意外时数据丢失。 序列化说白了就是将数据转成字节型数组然后传输。
3.序列化和反序列化
把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。
4.解决方法
了解序列化对象之后 我们知道 此时我们要对我们的data进行序列化
刚刚json又有方法可以直接调用
序列化:JSON.stringify()
反序列化:JSON.parse()
所以我们把data对象序列化
代码如下
最后我们在console.log我们获取的数据 发现已经OK啦
原文地址:https://www.cnblogs.com/Irelia/p/9977534.html