mytest3.py-api接入平台获取数据

  1. import base64
  2. import datetime
  3. import hashlib
  4. import urllib
  5. import urllib.parse
  6. import requests
  7. import hmac
  8.  
  9. # 火币网上的接入(原来的代码中有的api地址和账户信息)
  10. TRADE_URL = "https://api.huobi.pro"
  11. ACCESS_KEY = "5acf7fa3-2b53abe3-5d0e6b2e-885f5"
  12. SECRET_KEY = "13439487-047b4da1-87e463f0-efa3c"
  13.  
  14. # 返回api产生的数据
  15. def api_key_get(params, request_path):
  16. method = 'GET'
  17. timestamp = datetime.datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S')
  18. params.update({'AccessKeyId': ACCESS_KEY,
  19. 'SignatureMethod': 'HmacSHA256',
  20. 'SignatureVersion': '2',
  21. 'Timestamp': timestamp})
  22.  
  23. host_url = TRADE_URL
  24. host_name = urllib.parse.urlparse(host_url).hostname
  25. host_name = host_name.lower()
  26. params['Signature'] = createSign(params, method, host_name, request_path, SECRET_KEY)
  27.  
  28. url = host_url + request_path
  29. return http_get_request(url, params)
  30.  
  31. # 创建签名字符串
  32. def createSign(pParams, method, host_url, request_path, secret_key):
  33. sorted_params = sorted(pParams.items(), key=lambda d: d[0], reverse=False)
  34. encode_params = urllib.parse.urlencode(sorted_params)
  35. payload = [method, host_url, request_path, encode_params]
  36. payload = '\n'.join(payload)
  37. payload = payload.encode(encoding='UTF8')
  38. secret_key = secret_key.encode(encoding='UTF8')
  39.  
  40. digest = hmac.new(secret_key, payload, digestmod=hashlib.sha256).digest()
  41. signature = base64.b64encode(digest)
  42. signature = signature.decode()
  43. return signature
  44.  
  45. # 返回get请求获取数据
  46. def http_get_request(url, params, add_to_headers=None):
  47. headers = {
  48. "Content-type": "application/x-www-form-urlencoded",
  49. 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36',
  50. }
  51. if add_to_headers:
  52. headers.update(add_to_headers)
  53. postdata = urllib.parse.urlencode(params)
  54. response = requests.get(url, postdata, headers=headers, timeout=5)
  55. try:
  56.  
  57. if response.status_code == 200:
  58. return response.json()
  59. else:
  60. return
  61. except BaseException as e:
  62. print("httpGet failed, detail is:%s,%s" % (response.text, e))
  63. return
  64.  
  65. if __name__ == '__main__':
  66. params = {'account-id': '4656265'}
  67.  
  68. request_path = '/v1/account/accounts/%s/balance' % params['account-id']
  69.  
  70. res = api_key_get(params, request_path)
  71. print(res)
  72. print(type(res))

  

mytest3.py-api接入平台获取数据的更多相关文章

  1. C#/.NET使用HttpWebRequest、SqlBulkCopy从API获取数据批量插入DB

    小弟新手程序员一枚,代码技术和文章水平均不才.所写文章均为对自己所写所学代码的简单记录,可能对于老手程序员营养价值不高,望莫见怪. 我工作上有个需求:从某处API接口上获取数据(大约1W条而已)并插入 ...

  2. ASP.NET Web API实践系列07,获取数据, 使用Ninject实现依赖倒置,使用Knockout实现页面元素和视图模型的双向绑定

    本篇接着上一篇"ASP.NET Web API实践系列06, 在ASP.NET MVC 4 基础上增加使用ASP.NET WEB API",尝试获取数据. 在Models文件夹下创 ...

  3. 使用腾讯开发平台获取QQ用户数据资料

    <今天是七夕:祝大家七夕嗨皮,前可么么哒,后可啪啪啪> Tips:本篇博客将教你如何使用腾讯开发平台获取QQ用户资料 ----------------------------------- ...

  4. 微信公众平台开发,API接入与推送事件(1)

    博客好久没有更新了,今天说说微信开发.微信开发的好多初学者都会又这样的迷惑,微信开发到底是什么?其实微信开发本质我和我们的网站开发没有太大的区别.我们常说的微信开发也就是公众号开,微信公众号分为三个类 ...

  5. 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期

    腾讯云图片鉴黄集成到C#   官方文档:https://cloud.tencent.com/document/product/641/12422 请求官方API及签名的生成代码如下: public c ...

  6. vue ajax获取数据的时候,如何保证传递参数的安全或者说如何保护api的安全

    https://segmentfault.com/q/1010000005618139 vue ajax获取数据的时候,如何保证传递参数的安全或者说如何保护api的安全 点击提交,发送请求.但是api ...

  7. 从api接口获取数据-okhttp

    首先先介绍下api接口: API:应用程序接口(API:Application Program Interface) 通常用于数据连接,调用函数提供功能等等... 从api接口获取数据有四种方式:Ht ...

  8. 使用Vue.js和Axios从第三方API获取数据 — SitePoint

    更多的往往不是,建立你的JavaScript应用程序时,你会想把数据从远程源或消耗一个[ API ](https:/ /恩.维基百科.org /维基/ application_programming_ ...

  9. 百度地图API获取数据

    目前,大厂的服务范围越来越广,提供的数据信息也是比较全的,在生活服务,办公领域,人工智能等方面都全面覆盖,相对来说,他们的用户基数大,通过用户获取的信息也是巨大的.除了百度提供api,国内提供免费AP ...

随机推荐

  1. EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接

    EAGAIN.EWOULDBLOCK.EINTR与非阻塞 长连接 EWOULDBLOCK用于非阻塞模式,不需要重新读或者写 EINTR指操作被中断唤醒,需要重新读/写 在Linux环境下开发经常会碰到 ...

  2. Redis JAVA客户端 Jedis常用方法

    Jedis 是 Redis 官方首选的 Java 客户端开发包 (redis的java版本的客户端实现) #MAVEN配置 <dependency> <groupId>redi ...

  3. SenCha Touch 与 EXTJS 安装Myeclipse 插件

    http://www.cnblogs.com/jirimutu01/default.html 关于SenchaEclipsePlugin插件的安装和使用 使用过eclipse开发java程序的人都知道 ...

  4. 已知问题汇总 (2013-11-30) - QQ空间, EXTJS

    目前发现两个已知问题暂时无法得到解决: 1. QQ空间问题. 打开页面 http://user.qzone.qq.com/822994792/311, 点击 "xxx人赞" 这个链 ...

  5. 后缀数组LCP + 二分 - UVa 11107 Life Forms

    Life Forms Problem's Link Mean: 给你n个串,让你找出出现次数大于n/2的最长公共子串.如果有多个,按字典序排列输出. analyse: 经典题. 直接二分判断答案. 判 ...

  6. asp.net 判断session是否过期

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  7. SQL on Hadoop 的真相(2)

    转自:http://blog.jobbole.com/87159/ 这是一组系列博客,目的是详尽介绍 SQL-on-Hadoop .该系列的第一篇会介绍一些存储引擎和在线事务处理(简称 OLTP )相 ...

  8. mysql -- 存储过程中 declare 和 set 定义变量的区别

    mysql存储过程中,定义变量有两种方式:1.使用set或select直接赋值,变量名以 @ 开头.例如:set @var=1;可以在一个会话的任何地方声明,作用域是整个会话,称为会话变量. 2.以 ...

  9. HttpHandler简单示例

    using System.Web; namespace MyWebApp { public class MyHttpHandler : IHttpHandler { public void Proce ...

  10. Autofac IoC容器基本实战【2】

    原文:http://www.cnblogs.com/liping13599168/archive/2011/07/16/2108209.html Autofac是一款IOC框架,比较于其他的IOC框架 ...