如何在MicroPython中下载带有请求的二进制文件?



我试图通过基本身份验证的请求下载小于1 MB的二进制文件。身份验证部分工作了,我得到了预期的响应。

但事实是我很失落,因为我不能下载我需要的文件,我必须通过请求来下载。

你能帮我一下吗?
website = 'www.example.com/api'
username = 'test'
password = 'test'
auth_str = '%s:%s' % (username, password)
b64_auth_str = b2a_base64(auth_str)
headers = {'Authorization': 'Basic %s' % b64_auth_str.decode('utf-8')}
r = urequests.get(website,  headers=headers)

编辑:

由于"局限性"在urequests库中,我尝试了这个:mrequests

最佳库:https://github.com/SpotlightKid/mrequests

import mrequests
username = 'test'
password = 'test'
auth_str = '%s:%s' % (username, password)
b64_auth_str = b2a_base64(auth_str)
headers = {'Authorization': 'Basic %s' % b64_auth_str.decode('utf-8'),'accept': 'multipart/form-data'}
url = "https://domainexample.com/file.bin"
r = mrequests.get(url, headers=headers)
r.save("file.bin",1024)
r.close()

我最终编辑了Save方法来处理所需文件的下载百分比。这不是强制性的,但进度条总是健康的;-)

我不确定请求是否可以处理文件。我知道json和text工作得很好

r = urequests.get(website,  headers=headers)
data = r.text  # if text
data= r.json() # if json
r.close
# if you look at the type of data and it is a form of json response
# you will see its just a list of dict in python
print(type(ifJsonData))

但是,如果二进制文件没有扩展名(.hex),我认为你不需要做任何事情。

r = urequests.get(website, headers=headers)
data = r.text  # if text
r.close
print("data")

响应将为:b'I was the binary data you received'

b表示它是二进制的,并被翻译成ASCII(据我所知)。

最新更新