我试图使用微软的学术API,并使用Python从他们的站点运行代码,但是我的代码总是抛出InvalidURL: URL can't contain control characters
。
这是在browser:https://api.labs.cognitive.microsoft.com/academic/v1.0/evaluate?expr= Composite(AA.AuN=='jaime teevan')&count=2&attributes=Ti,Y,CC,AA.AuN,AA.AuId&subscription-key=<subscription_key>
中工作的URL (上面的调用是在:https://learn.microsoft.com/en-us/academic-services/project-academic-knowledge/reference-evaluate-method上的一个例子)
我试图使用下面的代码调用相同的示例,但它是有效的:
headers = {
# Request headers
'Ocp-Apim-Subscription-Key': '<KEY>',
}
params = urllib.parse.urlencode({
# Request parameters
'complete': '0',
'count': '1'
})
try:
conn = http.client.HTTPSConnection('api.labs.cognitive.microsoft.com')
conn.request("GET", "/academic/v1.0/evaluate?expr=Composite(AA.AuN==jaime teevan)&count=2&attributes=Ti,Y,CC,AA.AuN,AA.AuId", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
raise e
它引发以下错误:
InvalidURL: URL can't contain control characters. '/academic/v1.0/evaluate?expr=Composite(AA.AuN==jaime teevan)&count=2&attributes=Ti,Y,CC,AA.AuN,AA.AuId' (found at least ' ')
有人能帮我解决我缺少的东西吗?
发布于 2020-11-18 17:39:11
单引号、空格和其他字符在URL上传递它们时可能会很麻烦。慢下来一点之后,如果您尝试使用“请求”来代替呢?:
import requests
headers = {
# Request headers
'Ocp-Apim-Subscription-Key': '<KEY>',
}
url = "https://api.labs.cognitive.microsoft.com/academic/v1.0/evaluate?expr=Composite(AA.AuN==jaime teevan)&count=2&attributes=Ti,Y,CC,AA.AuN,AA.AuId"
response = requests.get(url=url, headers=headers)
print(response.content)
我刚刚对它进行了测试,得到了401错误消息,这意味着请求通过了,但我缺乏授权。
发布于 2020-11-18 17:29:12
使用原始字符串(r“myurl”)如下所示,并在其工作时发布:
( r"/academic/v1.0/evaluate?expr=Composite(AA.AuN==jaime teevan)&count=2&attributes=Ti,Y,CC,AA.AuN,AA.AuId,headers)
https://stackoverflow.com/questions/64897679
复制相似问题