习惯抓包然后把所有请求头弄上去,结果电脑上正常,手机模拟访问竟然是乱码的,我就郁闷了,竟然是http的常识坑死了我,还以为是163有什么高级手段呢。
解决方法是删除Accept-Encoding的模拟,或者自己手动解码.

map.put("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36.35068264 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36");map.put("Cache-Control", "max-age=0");map.put("Host", "s.music.163.com");map.put("Connection", "close");map.put("Accept-Encoding", "gzip, deflate, sdch");map.put("Accept", "application/json; charset=utf-8");

大致猜测可能是Accept,或者Accept-Encoding的问题后面搜索了一下,所以new一个GZIPInputStream就可以解决

private static String zipInputStreamParse(InputStream is) throws IOException {GZIPInputStream gzip = new GZIPInputStream(is);BufferedReader in = new BufferedReader(new InputStreamReader(gzip, "UTF-8"));StringBuffer buffer = new StringBuffer();String line;while ((line = in.readLine()) != null)buffer.append(line + "\n");is.close();return buffer.toString();}private static String zipInputStreamParse(String out) throws IOException {ByteArrayInputStream tInputStringStream = new ByteArrayInputStream(out.getBytes());return zipInputStreamParse(out);}

结果又出现新的错误了unknown format (magic number ef1f) 百度了一下说这样可以解决问题

public String unZip(String zipped) throws DataFormatException, IOException {byte[] bytes = zipped.getBytes("WINDOWS-1251");Inflater decompressed = new Inflater();decompressed.setInput(bytes);byte[] result = new byte[100];ByteArrayOutputStream buffer = new ByteArrayOutputStream();while (decompressed.inflate(result) != 0)buffer.write(result);decompressed.end();return new String(buffer.toByteArray(), charset);
}

实际上上面的代码也不能解决问题,上面我也copy错代码了,是压缩的代码,而并非是解压的代码,另外压缩的流如果强制转换为字符串然后再转回去会出现问题,所以我的简单的网络请求框架需要改写 判断请求头是否包含zip如果包含就进行自动解码操作.
原生的解压已经是字符串了,,

public static byte[] uncompress(InputStream in) {ByteArrayOutputStream out = new ByteArrayOutputStream();try {GZIPInputStream ungzip = new GZIPInputStream(in);byte[] buffer = new byte[256];int n;while ((n = ungzip.read(buffer)) >= 0) {out.write(buffer, 0, n);}} catch (IOException e) {Log.w(TAG, "gzip uncompress error.", e);}return out.toByteArray();}
``
所以在原来的封装简易框架上加了一个判断问题完美解决。不过现在要解决的问题是QQ音乐卡片不支持?拼接而且必须是mp3等格式结尾,尴尬第三方框架okhttp的gzip解决方案

public class GzipRequestInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request originalRequest = chain.request();
if (originalRequest.body() == null || originalRequest.header("Content-Encoding") != null) {
return chain.proceed(originalRequest);
}

Request compressedRequest = originalRequest.newBuilder().header("Content-Encoding", "gzip").method(originalRequest.method(), gzip(originalRequest.body())).build();return chain.proceed(compressedRequest);
}private RequestBody gzip(final RequestBody body) {return new RequestBody() {@Overridepublic MediaType contentType() {return body.contentType();}@Overridepublic long contentLength() {return -1; // 无法提前知道压缩后的数据大小}@Overridepublic void writeTo(BufferedSink sink) throws IOException {BufferedSink gzipSink = Okio.buffer(new GzipSink(sink));body.writeTo(gzipSink);gzipSink.close();}};
}

}


http://www.taodudu.cc/news/show-4971982.html

相关文章:

  • html分享qq好友app接口,iOS-QQ分享功能实现
  • linux版本的qq下载地址,linux版本qq的安装
  • python播放网络音乐_Python实现在线音乐播放器示例
  • python播放网络音乐_Python实现在线音乐播放器
  • qq163音乐网归属问题释疑
  • 如何能练就成一个卓越的程序员
  • 【成长必备】我为什么推荐你写博客?愿你多年以后成为你想成为的样子。
  • 小学语文阅读测试软件,小学语文同步课堂
  • 计算机网络在教学方面的作用是什么意思,浅谈发挥网络在教学中的作用
  • python人工智能什么人可以学_本科想学习人工智能方向,需要学习python的什么方向?...
  • Grub入门教程
  • 绘声绘色加载字幕教程
  • VisualStudio:打开后卡顿
  • 计算机证件照无法上传,为何不能上传照片
  • IE漏洞致数百万用户中招 快用瑞星卡卡打补丁
  • 不可用来编辑html的文件,没法设置和编辑版块、在首页不能编辑文章?
  • wpf 客户端【JDAgent桌面助手】详解(二)桌面宠物制作详解
  • 写的html代码电脑不显示,模版无法显示
  • 计算机编辑功能在哪,文本编辑栏到哪去了
  • 用HijackThis或卡卡安全助手轻松去除Win XP任务栏里的蓝色五角星
  • python图形化方式模块安装_(怎么安装python模块,如何安装python模块,常用安装方式)python助手安装教程视频...
  • 恰果果囖!测评CSDN浏览器助手--chrome插件
  • (图书馆抢座助手)利用jsoup实现学校图书馆自习室预约系统
  • [反流氓免费软件推荐]瑞星卡卡上网助手
  • 支持瑞星卡卡
  • 瑞星携“云安全”计划推卡卡6.0
  • 瑞星防火墙与QQ医生发生冲突 卡卡安全助手爱莫能助
  • 好课堂用Scratch编程06 趣学篇(二)热身中的卡卡
  • config类和config助手函数
  • Android版本Oppo电视,oppo电视助手app下载

163音乐点歌乱码分析以及解决办法相关推荐

  1. mysql数据库连接过多的错误,可能的原因分析及解决办法

    mysql数据库连接过多的错误,可能的原因分析及解决办法 来源:网络采集 作者:未知 系统不能连接数据库,关键要看两个数据: 1.数据库系统允许的最大可连接数max_connections.这个参数是 ...

  2. php 修改css 不生效,HTML外部引用CSS文件不生效原因分析及解决办法

    本文主要给大家介绍html外部引用css文件不生效的原因分析及解决办法,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧 作为一个前端小白,鼓捣了几天前端..今天突然发现我深信不疑的东西, ...

  3. 【50关于Visual Studio 2019控制台输出中文出现乱码问题及解决办法】

    文章目录 关于Visual Studio 2019控制台输出中文出现乱码问题及解决办法 1.从.txt文件中读取输出出现乱码 2.从中文字符串中读取输出出现乱码 关于Visual Studio 201 ...

  4. php session_start() 非常慢,PHP session_start()很慢问题分析与解决办法

    本文章来给各位同学介绍一下关于PHP session_start()很慢问题分析与解决办法,希望碰到此问题的同学可进入参考. 最近在做东西的时候发现一个问题 有一个接口挂了 ,然后进行测试访问地址的时 ...

  5. get/post时中文乱码问题的解决办法

    get/post时中文乱码问题的解决办法 参考文章: (1)get/post时中文乱码问题的解决办法 (2)https://www.cnblogs.com/opaljc/p/3807786.html ...

  6. [J2ME]Nokia播放音乐时发生MediaException的解决办法

     [J2ME]Nokia播放音乐时发生MediaException的解决办法 现象 在Nokia7610上播放音乐时遇到了-18的MediaException错误! J2ME中播放音乐资源的代码很容易 ...

  7. win8计算机usb无法识别usb设备,Win8.1无法识别USB设备原因分析及解决办法(适合Win8)...

    Win8.1无法识别USB设备原因分析及解决办法 同事孩子要上大学,购买了预装Win8.1系统的笔记本,想要使用读卡器传照片,插上USB读卡器后,任务栏右下角显示无法识别的USB设备,这怎么可能呢?W ...

  8. 关于一些常见智柜问题的分析及解决办法

    竟然还有小伙伴感觉自研项目不好的小伙伴? 渐渐感觉不管是在小公司或者在大公司,能有一个值得奋斗的远方就可以了,比如薪资高,钱多事少离家近,自己真的对自己目前做的事情感兴趣,否则干啥都感觉没劲,尤其是在 ...

  9. OpenCV中文路径问题、matplotlib可视化中文乱码问题的解决办法

    OpenCV中文路径问题.matplotlib可视化中文乱码问题的解决办法 OpenCV中文路径问题 读取图片 其中img_path为读取图片路径,可以包含中文 img = cv2.imdecode( ...

最新文章

  1. 计算机的安全问题中保密是指,计算机安全保密练习册答案.doc
  2. python真的很厉害吗-学会Python后都能做什么?网友们的回答简直不要太厉害
  3. C++之链表中头指针、头节点、首元结点的
  4. 算法与数据结构(part4)--顺序表
  5. 公钥、私钥、数字证书的概念 (讲得很明吧,通俗易懂)
  6. 不想remote的程序员跟咸鱼有什么区别?
  7. 关于计算机Excel中的试题,2015年职称计算机考试EXCEL练习试题及答案
  8. Ubuntu 16.04 安装QQ解决方案
  9. 原来微信还有隐藏代码,80%的用户还不知道!(附表白代码)
  10. ios 截屏保存图片
  11. opencart seo优化_「opencart seo插件」wordpress SEO插件都有哪些好用的?...
  12. 如何等比例调整图片大小?
  13. ES6 --》字符串与数值新增方法
  14. C++多态如何理解?实现多态性呢?多态性的作用呢?
  15. 网络安全HW系列之应急响应方法论思维导图
  16. (更新时间)2021年5月18日 C#.NET笔试题 高级篇
  17. ib物理hl难吗?ib物理考点避坑指南
  18. Joomla远程代码执行漏洞分析小白版(小宇特详解)
  19. houghpeaks
  20. 【三维装箱】基于粒子群算法求解三维装箱问题matlab源码

热门文章

  1. 【工具】持续集成工具——Jenkins
  2. 全球及中国3D打印电化学储能装置行业发展趋势分析及运行状况预测报告2022-2028年
  3. python智能停车场车位租赁系统django
  4. MTC×观山湖区重点招商项目成功签约
  5. Spring cloud使用ELK配置与使用详解之elasticsearch
  6. 弱监督学习 weakly supervised learning 笔记
  7. 一条sql是怎么执行的
  8. DIY 空气质量检测器
  9. 空气质量等级c语言编程,华中科技大学C语言课设 空气质量检测信息管理系统.docx...
  10. Golang基础 一揽子方案