zoukankan      html  css  js  c++  java
  • Python发送post请求的三种入参-文件、base64、普通入参

    作者:cao.dingzheng

      post是常见的http请求方式之一,而post常见的http请求入参方式一般有文件入参、包含base64编码的json入参、普通入参。这里就针对这三种常见入参方式进行Python的requests库post请求展示。

    在http协议中,post提交的数据必须放在消息主体中,但是协议中并没有规定必须使用什么编码方式,从而导致了提交方式的不同。服务端根据请求头中的content-type字段来获知请求中的消息主体是用何种方式进行编码,再对消息主体进行解析。这里主要针对于下面两种编码方式: 

      - application/json :以json串提交数据。 

      - multipart/form-data:上传文件。

      第一种请求入参:普通入参。这里展示了文字入参方法,也有如果想要对展示的结果utf-8编码格式进行转换。

    #coding=utf-8
    import requests
    url = '请求地址'
    header = {'content-type':'application/json'}
    t = "心灵安顿了,平衡了,生命也就快乐了,无憾了,如眼前一幅静美的画卷,清幽,温馨与宁静。"
    data = {"text":t}
    
    #这里需要注意data和json的区别
    response = requests.post(url=url,headers=header,json=data)
    #对请求结果进行编码转换,转换成汉字
    request = response.text.encode('utf-8').decode('unicode_escape')
    #不转换返回的结果
    print(response.text)
    #转换后返回的结果
    print(request)

    返回结果为:

    {"value":{"u60c5u611fu503eu5411":"u6b63u5411","u6d88u6781u6982u7387":9.72836e-06,"u79efu6781u6982u7387":0.99999,"u8f93u5165u6587u672c":"u5fc3u7075u5b89u987fu4e86uff0cu5e73u8861u4e86uff0cu751fu547du4e5fu5c31u5febu4e50u4e86uff0cu65e0u61beu4e86uff0cu5982u773cu524du4e00u5e45u9759u7f8eu7684u753bu5377uff0cu6e05u5e7duff0cu6e29u99a8u4e0eu5b81u9759u3002"}}
    
    {"value":{"情感倾向":"正向","消极概率":9.72836e-06,"积极概率":0.99999,"输入文本":"心灵安顿了,平衡了,生命也就快乐了,无憾了,如眼前一幅静美的画卷,清幽,温馨与宁静。"}}
    
    
    Process finished with exit code 0

    第二种请求入参:将图片转换成base64格式并且进行json入参。

    # coding=utf-8
    import requests,base64
    
    photo = r'D:	estwjj.jpg'#图片路径
    
    with open(photo,'rb') as f:
        base64_data = base64.b64encode(f.read())
        s = base64_data.decode()
    
    
    url = '请求url'#请求地址
    data = {"imageBase64": s}
    header = {'Content-Type': 'application/json'}
    response = requests.post(url=url,headers=header,json=data)
    
    print(response.text)

    第三种请求入参:带文件入参,如csv,txt,zip等。

    # coding=utf-8
    mport requests
    from requests_toolbelt.multipart.encoder import MultipartEncoder
    
    filename = r'D:	estOLT_DEMO.csv'
    file = open(filename,'rb')
    url = '请求地址'
    data = MultipartEncoder(
        fields={
            'OLT_INFO':
                ('OLT_DEMO.csv',
                 file,
                 'application/octet-stream')
        }
    )
    header={}
    header['content-type'] = data.content_type
    response = requests.post(url=url,headers=header,data=data)
    print(response.text)
  • 相关阅读:
    谈谈C++新标准带来的属性(Attribute)
    金融数据智能峰会 | 数据规模爆炸性增长,企业如何进行精准决策?云原生数据仓库数据化运营实战分享
    核桃编程:前端可观测性建设之路
    AI和大数据结合,智能运维平台助力流利说提升核心竞争力
    Python静态类型解析工具简介和实践
    盛京剑客系列24:极简估值教程——题记
    Echarts——关系图(人民的名义为例,简化)源码
    UVA10020(最小区间覆盖)
    LA4636积木艺术
    LA4636积木艺术
  • 原文地址:https://www.cnblogs.com/ustcinfo-qc/p/13879335.html
Copyright © 2011-2022 走看看