小米主题商店地址:http://zhuti.xiaomi.com/
上面有灰常多的主题,虽然说下载下来也不能直接安装,但是里面的很多资源还是非常不错的,小米官方并没有提供直接下载的地址,下面说一下如何解析
访问一个主题链接,地址如下
- http://zhuti.xiaomi.com/detail/6c112791-5607-4242-b1a1-a2d6ca804544
这个地址detail后面的一串文本就是主题唯一标识,6c112791-5607-4242-b1a1-a2d6ca804544
GET访问如下的地址即可获取json数据
- http://thm.market.xiaomi.com/thm/download/v2/6c112791-5607-4242-b1a1-a2d6ca804544
其中的6c112791-5607-4242-b1a1-a2d6ca804544也就是要下载主题的唯一标识,访问地址会返回一个json数据
- {
- "apiCode": 0,
- "apiData": {
- "downloadUrl": "http://f1.market.xiaomi.com/download/ThemeMarket/09863840ef64c4d02209a5929d55d2bec9f82a6ee/åèè·³è·³é¹æºè´¢-1.0.0.0.mtz",
- "fileHash": "ed824ae8a458c0fabf796a7c0e7027b3c2e3cb67",
- "fileSize": 28708717
- }
- }
例子编写
数据已经很明白了,downloadUrl后的数据就是真实下载地址,那么下面使用代码编写一个小小的例子
PHP+Jquery
由于小米服务器返回是json非jsonp,所以不能使用ajax直接跨域请求,那么就需要结合PHP实现跨域请求数据了
首先创建一个PHP文件,作为访问请求,代码如下
- <?php
- if(isset($_GET['id']))
- {
- $url="http://thm.market.xiaomi.com/thm/download/v2/".$_GET['id'];
- $ch = curl_init($url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
- $result = curl_exec($ch);
- curl_close($ch);
- echo $result;
- }
- ?>
接着创建用户界面和响应代码
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8" />
- <script type="text/javascript" src="js/jquery-3.2.1.min.js" ></script>
- <title></title>
- </head>
- <body>
- 请输入下载地址<input type="text" id="url" style="width: 50%" />
- <button id="go">解析</button>
- <div id="downurl">点击解析后这儿会显示下载地址</div>
- </body>
- <script>
- $('#go').click(function(){
- var value=$("#url").val();
- value=value.substring(31);
- $.getJSON("d.php",{id:value}, function(result){
- $("#downurl").html('<a href="'+result.apiData.downloadUrl+'">点击下载</a>');});
- });
- </script>
- </html>
jquery请自行引入,点击按钮后响应事件,获取图中文本框的值,然后进行文本截取,截取完成后使用jquery发送给php进行处理,接着将PHP返回的json解析,并且改变网页源码中的div,生成下载地址

本文介绍了如何解析小米主题商店的主题下载地址,通过PHP和Jquery实现跨域请求获取JSON数据,从而得到真实的下载链接。用户输入主题详细页URL,程序会解析出下载地址并展示在页面上。
2212

被折叠的 条评论
为什么被折叠?



