• Requests发Post请求data里面嵌套字典


    一、Post请求,data里面嵌套字典

    Requests发Post请求,data里面嵌套字典的常见形式如下:

    info = {
        "appid": "123",
        "checkin_type": "6",
        "role": "1",
        "stunum": "15812086122"
        }
    form_data = {
        'Data': '%s' % info,
        'MsgType': 'APP_SEND_CARDCHECKIN_BYSTUNUM'
    }
    result = requests.post(url, data=form_data)
    

    需提别注意的是,一定要用 'Data': '%s' % info格式化输出这种形式把嵌套的字典传给Data,如果直接将info当做value赋值给Data,即,'Data': info,请求是不成功的

    {'error_code': '505', 'error_msg': 'Data格式不正确参数验证失败'}
    

    通常当post传入data参数时候,请求格式一般为Content-Type: application/x-www-form-urlencoded格式,按照官方的说法数据字典在发出请求时会自动编码为表单形式,所以是不是因为这个原因,data中嵌套的字典需要处理成字符串才能正常发post,这点暂存疑惑???

    二、Post常见用的请求方式

    1. 传参为json格式
      通过抓包后,转换为raw格式,可以看到Content-Type: application/json
    import requests
    import josn
    
    payload = {
    'a': 1
    'b': 2
    }
    # 方法一,将payload转为josn格式
    payload = josn.jump(payload)
    res = requests.post(url, data=payload)
    
    # 方法二,直接用josn参数传递
    res = requests.post(url, josn=payload)
    
    1. 传参为form-data格式
      通过抓包后,转换为raw格式,可以看到Content-Type: application/x-www-form-urlencoded,此时直接把字典payload传给参数data即可,此处就需要注意的是,如果payload里面嵌套字典,切记要先将其转为字符串形式,然后再入参
    import requests
    
    payload = {
    'a': 1
    'b': 2
    }
    res = requests.post(url, data=payload)
    
    1. 传参带文件
      post上传文件,首先需要构造file,格式如下,fp为文件路径,然后将构造好的file传给files即可
    import requests
    
    file = {
    'file_name': open(fp, 'rb') 
    }
    res = requests(url, files=file)
    

    OK!

    ~
    ~
    ~

    不积跬步,无以至千里

    积跬步,至千里
  • 相关阅读:
    物料序号不可修改
    物料序号不可输入
    禁用物料不允许BOM
    MRP工作台任务下达之x组织屏蔽全部发放功能
    MRP工作台任务下达之计划组为必输
    按计划员自动带出对应任务类型
    java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource解决方法
    web.xml 中<taglib>报错(转载)
    web.xml元素介绍
    Struts+Tomcat搭建
  • 原文地址:https://www.cnblogs.com/freedomlidi/p/12431316.html
Copyright © 2020-2023  润新知