zoukankan      html  css  js  c++  java
  • api接口对接

    api接口对接

    json模块

      Json   模块提供了四个方法: dumps、dump、loads、load
    
    pickle 模块也提供了四个功能:dumps、dump、loads、load
    
     dumps和dump   序列化方法
           dumps只完成了序列化为str,
           dump必须传文件描述符,将序列化的str保存到文件中
    

    总结:

    1. json序列化方法:
    
              dumps:无文件操作            dump:序列化+写入文件
    
      2. json反序列化方法:
    
              loads:无文件操作              load: 读文件+反序列化
    
      3. json模块序列化的数据 更通用
    
          picle模块序列化的数据 仅python可用,但功能强大,可以序列号函数
    
      4. json模块可以序列化和反序列化的  数据类型 见  python对象(obj) 与json对象的对应关系表
    
      5. 格式化写入文件利用  indent = 4 
    

    md5加密:

    import hashlib
    
    # 待加密信息
    str = '123456'
    # 创建md5对象
    hl = hashlib.md5()
    hl.update(str.encode("utf-8"))
    print('MD5加密前为 :' + str)
    print('MD5加密后为 :' + hl.hexdigest())
    

    双重加密:

    md5_obj=hashlib.md5("123456".encode("utf-8"))
    str1=md5_obj.hexdigest() #加密1次
    obj2=hashlib.md5(str1.encode("utf-8"))
    str2=obj2.hexdigest()#加密2次
    print(str2) #双重加密后,同样解密开
    

    加盐:

    from random import Random  
    import hashlib
      
    # 获取由4位随机大小写字母、数字组成的salt值  
    def create_salt(length = 4):  
        salt = ''  
        chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'  
        len_chars = len(chars) - 1  
        random = Random()  
        for i in range(length):  
            # 每次从chars中随机取一位  
            salt += chars[random.randint(0, len_chars)]  
        return salt  
      
    # 获取原始密码+salt的md5值  
    def create_md5(pwd,salt):  
        md5_obj = hashlib.md5()  
        md5_obj.update((pwd + salt).encode("utf-8"))  
        return md5_obj.hexdigest()  
      
    # 原始密码  
    pwd = '123456'  
    # 随机生成4位salt  
    salt = create_salt()  
    # 加密后的密码  
    md5 = create_md5(pwd, salt)  
      
    print('[pwd]
    ',pwd ) 
    print('[salt]
    ', salt)  
    print('[md5]
    ', md5) 
    
    post 请求:
        url = 'http://m.ctrip.com'
        payload = {'some': 'data'}
        r = requests.post(url, data=json.dumps(payload))
        
        headers = {'content-type': 'application/json'}
        url = 'http://47.95.71.224/v1/clue/saler'
        r = requests.post(url,data=post_data,headers=headers)
    

    测试实列:

    import hashlib
    import requests
    import json
    import time
    time = time.time()
    time = str(time).split('.')[0]
    token = 'JD8NF6SLIAF9JDS7NDSY'
    data = {
        'name': '先生',
        'mobile': '18079575676',
        'city': '南昌',
        'brand': '未知',
        'series': '未知',
        'model': '未知',
        'kilometer':'10',
        'licensed_date_year':'2010 3',
        'is_operation':'',
        'is_accidented':''
    }
    data = json.dumps(data)
    print(data)
    
    sign = hashlib.md5((data + token + time).encode("utf-8")).hexdigest()
    post_data = {
        'token': token,
        'sign': sign,
        'time': time,
        'data': data,
    }
    url = 'http://47.95.71.224/v1/clue/saler'
    r = requests.post(url, data=post_data)
    print(r.text)
    
    
  • 相关阅读:
    C#面向对象之封装。
    python 数据处理学习pandas之DataFrame
    有用的vscode快捷键大全+自定义快捷键
    angular中控制器之间传递参数的方式
    angular.module 详解
    如何让类数组也使用数组的方法比如:forEach()
    CSS之flex兼容
    JavaScript中捕获/阻止捕获、冒泡/阻止冒泡
    Vue2.0 探索之路——生命周期和钩子函数的一些理解
    React 生命周期
  • 原文地址:https://www.cnblogs.com/shaozheng/p/12801415.html
Copyright © 2011-2022 走看看