zoukankan      html  css  js  c++  java
  • python发送post请求上传文件,无法解析上传的文件

    前言

    近日,在做接口测试时遇到一个奇葩的问题。

    使用post请求直接通过接口上传文件,无法识别文件。

    遇到的问题

    以下是抓包得到的信息:

    以上请求是通过Postman直接发送请求的。

    在这里可以看到消息头里包含:Access-Token和Content-Type

    因此在在使用python直接调用此接口时,传入的Headers也是包含这两个值的:

    def send_app_logo(token, appid):
        url = "XXXXXXXXX"
        headers = {
            "Access-Token": token,
            "Content-Type": "application/x-www-form-urlencoded",
        }
        data = {"logo": ('logo1024x1024.png',open('/XXXXXX/XXXX/1024x1024.png','rb'),'image/png')}
        res = requests.post(url=url,headers=headers,files=data)
        print(url)
        print(res.text)
        result_json = json.loads(res.text)
        code = result_json["code"]
        message = result_json["message"]
        return code, message

    此时,从抓包工具中看到发送的请求结果是失败的,无法解析文件:

    解决办法

    后面直接把headers里面的Content-Type去掉,完美解决此问题:

    def send_app_logo(token, appid):
        headers = {
            "Access-Token": token,
        }
        url = "XXXXXXXXXXXX"
        data = {"logo": ('logo1024x1024.png',open('/XXXXXX/XXXXX/1024x1024.png','rb'),'image/png')}
        res = requests.post(url=url,headers=headers,files=data)
        print(url)
        print(res.text)
        result_json = json.loads(res.text)
        code = result_json["code"]
        message = result_json["message"]
        return code, message

  • 相关阅读:
    tomcat自启动的最简单的方法
    Eclipse引入DTD文件
    MyBatis框架之基本知识介绍
    【转】Linux系统安装Redis详细过程
    Spring MVC + Spring + MyBatis 框架整合
    Spring框架之IoC和AOP
    Mysql 时间相关
    【转】Spring事务详解
    Spring的注解问题
    关于Calendar的一些用法总结
  • 原文地址:https://www.cnblogs.com/91parson/p/10159617.html
Copyright © 2011-2022 走看看