为什么我的 Python 请求库的 post 请求中充满了“lorem ipsem”文本?

格兰尼特开发

我正在编写一个更大的脚本,并在尝试将文件与 json 令牌一起发布时遇到了一个奇怪的问题。

我已成功使用 requests.post() 函数将 JSON 数据发送到服务器。但是,当我尝试发送文件和 JSON 数据时,帖子失败了,当我检查帖子的正文时,它充满了我没有放在那里的“lorem ipsum”文本,这导致请求失败,而且我的JSON 数据无处可寻。

import requests

SERVER = "http://localhost:3030/"

test_token = {'session_uuid': '90f50db9-39b1-476c-9fa4-3b7d2af51ad4',
    'client_uuid': '371f291c-2a65-4384-9e01-bf3ee880b777',
    'expiration': 'Wed Jun 18 19:20:21 EDT 2022'}

def post_upload_endpoint(endpoint, path, payload):
    try:
        print("Payload: ", payload) #just to make sure it's what I expect
        r = requests.post(endpoint, files=path, json=payload)
        print("Request body: ", r.request.body)
        return r.json()
    except Exception as x:
        print("Exception: ", x)
        return False, "Failed: {}".format(endpoint)


def main():
    path = {'document': open('./payload.txt', 'rb')}
    post_upload_endpoint(SERVER + "exc/sync", path, test_token)


if __name__ == "__main__":
    main()

以上,运行时打印出以下内容。第一行是我的健全性检查,确保令牌正确传递,就是这样。第二行是请求正文。

    Payload:  {'session_uuid': '90f50db9-39b1-476c-9fa4-3b7d2af51ad4', 'client_uuid': '371f291c-2a65-4384-9e01-bf3ee880b777', 'expiration': 'Wed Jun 18 19:20:21 EDT 2022'}
Request body:  b'--0b9b477016594955267c5e7859cc0acb\r\nContent-Disposition: form-data; name="document"; filename="payload.txt"\r\n\r\n"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."\r\n--0b9b477016594955267c5e7859cc0acb--\r\n'

为什么会这样?我搜索 Google 和 StackOverflow,似乎没有其他人报告此错误。我的令牌不见了,取而代之的是一整段“lorem ipsum”。

我一直在阅读今天早上可以找到的文档,但它非常稀疏,并且没有任何关于默认使用“lorem ipsum”段落的内容。

埃文·库迪尔

尽管从文档中不是很清楚,但似乎jsonandfiles参数requests.post是互斥的。

当我们在这里查看请求源代码时,我们可以看到:链接到 github

the prepare_body函数中,body 被设置为编码后的 json,然后如果你提供一个文件,body 会被文件的内容覆盖。

因此,您看到的 lorem ipsum 很可能是您文件的内容,./payload.txt您检查了吗?

要同时发送文件和 json,请参阅此答案

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我的文本视图充满了多余的空间?多余的行不在代码中。屏幕截图

为什么我不能使用Python的`requests`库将“无”作为数据发送到POST请求中?

FastAPI (Python) 为什么我收到“不支持的升级请求”。使用 POST 请求?

为什么Golang将我的POST请求视为GET请求?

为什么我的数组参数不在 POST 请求中?

为什么发送 post 请求在 python 中不起作用?

Python3:不带请求库的JSON POST请求

为什么我收到请求库错误?

为什么我的C ++程序的汇编输出中充满了.ascii而没有汇编代码?

为什么我在 javascript 中从 blob 生成的 docx 充满了 [Object Object]?

为什么我的文件系统似乎对Ubuntu充满了?

为什么我在Django上收到403 POST请求错误?

为什么我对 PHP 文件的 Angular POST 请求返回 404?

为什么我的POST请求保持无限加载?

为什么我的 POST 请求会导致完全重新渲染?

为什么我在 Python 请求中收到响应 400?

为什么龙卷风在python中阻止了我的请求

Python请求库-从POST请求中抓取单独的JSON和HTML响应

通过POST使用请求库进行python身份验证

Python 请求库无法在 HTTP POST 上指定 JSON 密钥

为什么从csv文件中创建的Numpy数组充满了NaN值?

我如何使用 Python 请求库提交 https 发布请求

为什么 Common Lisp 著名的库 Dexador 不适用于这个 HTTP POST 请求案例?这是一个错误还是我错过了什么?

为什么 Common Lisp 著名的库 Dexador 不适用于这个 HTTP POST 请求案例?这是一个错误还是我错过了什么?

为什么 Common Lisp 著名的库 Dexador 不适用于这个 HTTP POST 请求案例?这是一个错误还是我错过了什么?

为什么我对PHP页面的Angular POST请求没有设置POST数组?

为什么我的smtp请求在python中保持超时

为什么我的 POST 请求在提交表单时变成了 GET 请求?

为什么我在 app.js 中的 POST 登录请求总是返回 404?