无法使用 Python 登录 Dydra
Unable to log into Dydra using Python
我是 Dydra 的注册用户,正在尝试以编程方式更新其中的存储库。尽管我已经登录,但在尝试更新存储库时出现 401 错误。以下是我的代码:
username = 'myUsername'
password = 'myPassword'
URL = 'http://dydra.com/login'
with requests.Session() as s:
resp = s.get(URL)
soup = BeautifulSoup(resp.text)
csrfToken = soup.find('meta',{'name':'csrf-token'}).get('content')
# print csrf_token
payload = {
'account[login]':username,
'account[password]':password,
'csrfmiddlewaretoken':csrfToken,
'next':'/'
}
print payload
p = s.post(URL,data=payload, headers=dict(Referer=URL))
print p.text
r = s.get('http://dydra.com/myUsername/repoName/sparql')
print r.text
for stmt in dataGraph:
dydraSparqlEndpoint = 'http://dydra.com/myUsername/repoName/sparql'
queryStringUpload = 'INSERT DATA {%s %s %s}' % stmt
sparql = SPARQLWrapper(dydraSparqlEndpoint)
sparql.setQuery(queryStringUpload)
sparql.method = 'POST'
sparql.query()
for 语句之前的代码按预期工作。为什么插入语句会导致身份验证错误?我需要在代码中更改什么才能成功登录?
根据 Joshua 和 Artemis 的建议,我找到了登录方式:
key = my_dydra_key
dydraSparqlEndpoint = 'http://dydra.com/username/rep_name/sparql'
for stmt in dataGraph:
queryStringUpload = 'INSERT DATA {%s %s %s}' % stmt
sparql = SPARQLWrapper(dydraSparqlEndpoint)
sparql.setCredentials(key,key)
sparql.setQuery(queryStringUpload)
sparql.method = 'POST'
sparql.query()
这里重要的是sparql.setCredentials(key,key)
。密钥是 Dydra 为您提供的用于以编程方式登录的 API 密钥。重复是因为sparql.setCredentials
需要用户名和密码作为参数。
我是 Dydra 的注册用户,正在尝试以编程方式更新其中的存储库。尽管我已经登录,但在尝试更新存储库时出现 401 错误。以下是我的代码:
username = 'myUsername'
password = 'myPassword'
URL = 'http://dydra.com/login'
with requests.Session() as s:
resp = s.get(URL)
soup = BeautifulSoup(resp.text)
csrfToken = soup.find('meta',{'name':'csrf-token'}).get('content')
# print csrf_token
payload = {
'account[login]':username,
'account[password]':password,
'csrfmiddlewaretoken':csrfToken,
'next':'/'
}
print payload
p = s.post(URL,data=payload, headers=dict(Referer=URL))
print p.text
r = s.get('http://dydra.com/myUsername/repoName/sparql')
print r.text
for stmt in dataGraph:
dydraSparqlEndpoint = 'http://dydra.com/myUsername/repoName/sparql'
queryStringUpload = 'INSERT DATA {%s %s %s}' % stmt
sparql = SPARQLWrapper(dydraSparqlEndpoint)
sparql.setQuery(queryStringUpload)
sparql.method = 'POST'
sparql.query()
for 语句之前的代码按预期工作。为什么插入语句会导致身份验证错误?我需要在代码中更改什么才能成功登录?
根据 Joshua 和 Artemis 的建议,我找到了登录方式:
key = my_dydra_key
dydraSparqlEndpoint = 'http://dydra.com/username/rep_name/sparql'
for stmt in dataGraph:
queryStringUpload = 'INSERT DATA {%s %s %s}' % stmt
sparql = SPARQLWrapper(dydraSparqlEndpoint)
sparql.setCredentials(key,key)
sparql.setQuery(queryStringUpload)
sparql.method = 'POST'
sparql.query()
这里重要的是sparql.setCredentials(key,key)
。密钥是 Dydra 为您提供的用于以编程方式登录的 API 密钥。重复是因为sparql.setCredentials
需要用户名和密码作为参数。