python使用多部分表单参数

时间:2017-01-23 18:09:47

标签: python python-requests

我有一个API,需要在正文中发送 multipart / form-data content 才能使用POST 上传文件(图像)。我选择使用python的请求模块,因为对我这样的新手很容易。有两个表单参数可以通过;一个叫做文件,应该是实际的文件数据,另一个叫做文件数据,这是一个字典对象,如下所示:

    {"param1": param_val,"param2":param_val1}

我见过http://docs.python-requests.org/en/master/user/quickstart/#post-a-multipart-encoded-file但它并没有提到传递表单参数,即好像这些参数是从Web表单中传递的值,该表单为文件名和其他参数提供占位符。请注意,如果我将普通参数传递给API调用,如:

    r = requests.post(url, headers= headers,params=params)

我最终会在URL之后发送参数,如 URL?param1 = param_val> ... etc 在这种情况下不起作用。所以我基本上需要一种方法将上面提到的表单参数作为请求的表单数据发送。如果我能在场景中获得一些关于POST调用语法的指导,那将会有很大帮助 -

编辑

****以获得更清晰****

我的POST请求的所需HTTP跟踪如下所示:

    POST <application URL>
    Host: <Host server name>
    Authorization: Basic ABCDXXXX
    Cache-Control: no-cache
    Postman-Token: XXXXXX-ABACC-XXXXX
    Content-Type: multipart/form-data; boundary=----     

    ------WebKitFormBoundaryXYXXXXXXXXXXXXXXXXX
    Content-Disposition: form-data; name="file-data"

    {"description": "Sample desc","languageCode": "en" }
    ------WebKitFormBoundaryABCXXXXXXXXXXXXX
    Content-Disposition: form-data; name="file"; filename=""
    Content-Type: 


    ------WebKitFormBoundaryWWWWXXXXXXXXXXXX--

如果我使用表格:

    r = requests.post(url,headers=headers,data=filedata,files=files)

我最终收到一条错误消息'400 199-repeated entities []',经过仔细调查后发现该请求正在尝试解压我的 file-data 变量中的元组并最终创建两个内容边界,一个用于描述,另一个用于语言代码。有没有办法可以让它只在表格参数中传递一次文件数据,如上图所示?

****编辑结束*****

提前致谢 - 问候

0 个答案:

没有答案
相关问题