gpt4 book ai didi

Python Requests Invalid URL Label 错误

转载 作者:太空宇宙 更新时间:2023-11-03 13:47:35 25 4
gpt4 key购买 nike

我正在尝试访问 Shopify 的 API,它使用的 URL 格式为 -https://apikey:password@hostname/admin/resource.xml

例如http://7ea7a2ff231f9f7:95c5e8091839609c864@iliketurtles.myshopify.com/admin/orders.xml

执行 $curl api_url 会下载正确的 XML,但是当我这样做时

 import requests
api_url = 'http://7ea7a2ff231f9f7d:95c5e8091839609c864@iliketurtles.myshopify.com/admin/orders.xml'
r = requests.get(api_url) # Invalid url label error

知道我为什么会收到这个吗?直接在浏览器中 curl /打开链接工作正常。是因为网址太长了吗?

谢谢!

最佳答案

错误('URL 有一个无效的标签。')可能是 requests 库中的错误:它应用 idna 编码(对于国际化域名)在附有用户信息的主机名上,source :

netloc = netloc.encode('idna').decode('utf-8')

对于长用户名:密码,这可能会引发“标签为空或太长”错误。你可以试试report it on the requests' issue tracker .

a:b@example.com form is deprecated否则requests.get('https://a:b@example.com') 应该等同于 requests.get('https://example.com', auth=(' a', 'b')) 如果用户名:密码中的所有字符都来自 [-A-Za-z0-9._~!$&'()*+,;=]设置。

curlrequests 也不同,然后在用户信息中有百分比编码的字符,例如,https://a:%C3%80@example.com 导致 curl 生成以下 http header :

Authorization: Basic YTrDgA==

但是请求产生:

Authorization: Basic YTolQzMlODA=

即:

>>> import base64
>>> base64.b64decode('YTrDgA==')
'a:\xc3\x80'
>>> print _
a:À
>>> base64.b64decode('YTolQzMlODA=')
'a:%C3%80'

关于Python Requests Invalid URL Label 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16470064/

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