micropython - 如何在 MicroPython 中下载带有 urequests 的二进制文件?
问题描述
我正在尝试通过具有基本身份验证的 urequests 下载小于 1 MB 的二进制文件。身份验证部分有效,我得到了预期的响应。
但事实是我感到迷茫,因为我无法下载我需要的文件,我必须通过 urequests 来完成。
你能帮我个忙吗?
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 方法来处理所需文件的下载百分比。这不是强制性的,但进度条总是健康的;-)
解决方案
我不确定 urequests 是否可以处理填充。我知道 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(据我所知)。
推荐阅读
- selenium-webdriver - 外部代理 Titanium Web 代理?
- javascript - chrome扩展错误:拒绝执行内联事件处理程序,因为
- jpeg - 如何为 JEPG 霍夫曼值建立查找表
- unit-testing - 未执行任何测试(Play Framework)
- python - 有没有办法在字节正则表达式中使用 \b ?(Python)
- python - 如何提高拆分列表的速度?
- java - keytool 要求输入密码以读取 java 证书 ubuntu 18.04
- mongodb - 遍历 MongoDB 集合并删除每两个连续 id 的文档
- sql - SQL Schema - 单一产品/产品变化和库存水平
- python - Pandas groupby 将组中的一行的值添加到组的所有行