【发布时间】:2017-01-24 14:47:21
【问题描述】:
我之前在 Python 2.7 中使用过请求,但从未遇到过这个问题。现在我在 Python 3 中编码,它甚至无法连接到服务器。
我不断收到错误消息:UnicodeError: label empty or too long
用于说明目的的简化代码:
shop_url = "https://APIKEY:CODE@SHOP.ECOMMERCE.com/admin/"
def get_products():
url = shop_url + "products.json"
r = requests.get(url=url, params={"limit": "250"})
response = r.json()
print(response)
我读过它与连接到服务器之前的 url 的 IDNA 编码有关。
有谁知道如何解决这个问题?
编辑:
我找到了解决方案,而不是在 URL 中传递 APIKEY & CODE。我可以将它作为 HTTPBasicAuth 在标头中传递。比 url 更改为 "http://SHOP.ECOMMERCE.com/admin/" 和 IDNA 不再给出任何问题。
【问题讨论】:
-
您使用的是什么版本的请求?
-
python 3.6 & 请求 2.12.4
-
编辑:刚更新到2.13.0,可惜没有解决问题。
-
对于任何在这里绊倒的人。我不确定为什么 Requests lib 会如此严格地执行此操作。我在源代码中寻找了一个简单的解决方法,但没有运气。因此,这是要发送的标头(因为上面没有明确提及)。
headers = { 'Authorization': SHOPIFY_KEY, 'X-Shopify-Access-Token': SHOPIFY_PASSWORD,}以上对我有用。 Shopify 文档目前和往常一样,在标题和所有内容的主题上都有错误和拼写错误。 #就业保障。好的平台,没有帮助的支持。
标签: python-3.x python-requests shopify