Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python请求无效的URL标签错误_Python_Shopify - Fatal编程技术网

Python请求无效的URL标签错误

Python请求无效的URL标签错误,python,shopify,Python,Shopify,我正在尝试访问Shopify的API,它使用的URL格式为- https://apikey:password@hostname/admin/resource.xml e、 g.http://7ea7a2ff231f9f7:95c5e8091839609c864@iliketurtles.myshopify.com/admin/orders.xml 执行$curl api_url会下载正确的XML,但如果执行此操作 import requests api_url = 'http://7ea7a

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

e、 g.
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
知道我为什么会得到这个吗?在浏览器中直接卷曲/打开链接可以正常工作。是因为URL的长度太长吗


谢谢

这不是URL的长度。如果我这样做:

import requests
test_url = 'http://www.google.com/?somereallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallylongurl=true'
r = requests.get(test_url)
返回

您是否尝试过使用请求身份验证参数发出请求

>>请求。获取('http://iliketurtles.myshopify.com/admin/orders.xml,auth=('ea7a2ff231f9f7','95c5e8091839609c864'))
该错误(
'URL具有无效标签。
)可能是
请求
库中的一个错误:它在附加了userinfo的主机名上应用
idna
编码(对于国际化域名):

这可能会为长用户名:密码引发“标签为空或太长”错误。你可以试试看

否则
requests.get('https://a:b@example.com“)
应等同于
请求。get('https://example.com,auth=('a','b'))
如果username:password中的所有字符都来自
[-a-Za-z0-9.33;!$&'()*+,;=]
set

curl
请求
也不同,因为userinfo中有百分比编码字符,例如
https://a:%C3%80@example.com
导致
curl
生成以下http头:

Authorization: Basic YTrDgA==
但是
请求
产生:

Authorization: Basic YTolQzMlODA=
i、 e:


这是你真正的API密钥和密码吗??为了以防万一,我已经拿走了一半。这是一个虚拟URL。但是,api_url的所有部分的长度都与原始部分相同。哦,好消息!我只是想看看!现在我将调查您的错误:-)我确信这就是导致错误的原因!谢谢!不过有一个疑问——为什么curl工作得很好?这也可能是一件简单的事情,比如在请求中使用了错误的字符串,例如,无意中使用了value而不是key(反之亦然)
文件中的文件:response=requests.get(“{}/{}”.format(url,file))#您可能需要文件[file]在这里
Authorization: Basic YTrDgA==
Authorization: Basic YTolQzMlODA=
>>> import base64
>>> base64.b64decode('YTrDgA==')
'a:\xc3\x80'
>>> print _
a:À
>>> base64.b64decode('YTolQzMlODA=')
'a:%C3%80'