如何使用 urllib Python3 库转换以下代码?



当我使用python的请求库时,下面的代码对我来说绝对可以正常工作。我希望在 Python3 库中使用 urllib 完成相同的操作。

import requests
files = {'FileData': open(sample.png, 'rb')}
headers={
"Authorization": "Basic ***********"
}
result = requests.post("https://my_sample_api_url",headers=headers,files=files)

我尝试像这样在 urllib 中进行此帖子调用,这给了我 400 个错误请求错误。

import urllib
from urllib.request import Request, urlopen
files = {'FileData': open("sample.png", "rb")}
headers={
"Authorization": "Basic ************"
}
data_bytes = urllib.parse.urlencode(files).encode("utf-8")
result_req = Request("https://my_sample_api_url", data=data_bytes, headers=headers)
result = urlopen(image_result_req)

如何将此代码转换为 urllib?

要按multipart/form-data上传文件,您可以将urllib与海报库一起使用。

from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
import urllib
# Register the streaming http handlers with urllib
register_openers()
# Start the multipart/form-data encoding of the file "sample.png"
# headers contains the necessary Content-Type and Content-Length
# datagen is a generator object that yields the encoded parameters
datagen, headers = multipart_encode({"image": open("sample.png")})
request = urllib.request.Request("https://my_sample_api_url", datagen, headers)
request.add_header("Authorization", "Basic ***********")
print(urllib.request.urlopen(request).read())

最新更新