gpt4 book ai didi

python - 如何在 python 中发送带有请求的 “multipart/related”?

转载 作者:太空狗 更新时间:2023-10-29 17:39:41 25 4
gpt4 key购买 nike

我正在尝试使用 Python 中的请求发送多部分/相关消息。该脚本看起来很简单,除了请求似乎只允许发送多部分/表单数据消息,尽管他们的文档没有以这种或另一种方式明确说明这一点。

我的用例是发送带有附件的肥皂。我可以提供一个字典,其中包含两个文件,这两个文件的内容是一个测试 soap-message 和一个我要发送的测试文档。第一个包含带有所有说明的 soap 消息,第二个是实际文档。

但是,如果我不指定 header 值,则在使用文件选项时,请求似乎只使用 multipart/form-data。但是,如果我指定 header 以尝试指定不同的多部分类型,请求似乎不会添加 mime 边界信息。

url = 'http://10.10.10.90:8020/foo'
headers = {'content-type': 'multipart/related'}
files = {'submission': open('submission_set.xml', 'rb'), 'document': open('document.txt', 'rb')}
response = requests.post(url, data=data, headers=headers)
print response.text

有没有办法使用请求来完成这项工作?或者还有其他我应该关注的工具吗?

最佳答案

您必须自己创建 MIME 编码。您可以使用 email.mime 来做到这一点包裹:

import requests
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

related = MIMEMultipart('related')

submission = MIMEText('text', 'xml', 'utf8')
submission.set_payload(open('submission_set.xml', 'rb').read())
related.attach(submission)

document = MIMEText('text', 'plain')
document.set_payload(open('document.txt', 'rb').read())
related.attach(document)

body = related.as_string().split('\n\n', 1)[1]
headers = dict(related.items())

r = requests.post(url, data=body, headers=headers)

我假设 XML 文件使用 UTF-8,您可能还想为 document 条目设置一个字符集。

requests 只知道如何创建 multipart/form-data post body; multipart/related 不常用。

关于python - 如何在 python 中发送带有请求的 “multipart/related”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15746558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com