SPARQLWrapper HTTP错误401:未授权
我通过SQL帐户根据VirtSPARQLProtectSQLDigestAuthentication保护我的SPARQL端点。SPARQLWrapper HTTP错误401:未授权
from SPARQLWrapper import SPARQLWrapper, JSON, DIGEST
sparql = SPARQLWrapper("http://example.org/sparql")
sparql.setQuery("...")
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
在这之后,我用摘要的方式来获取数据,
from SPARQLWrapper import SPARQLWrapper, JSON, DIGEST
sparql = SPARQLWrapper("http://example.org/sparql")
sparql.setHTTPAuth(DIGEST)
sparql.setCredentials('login', 'password')
sparql.setQuery("...")
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
,401错误发生:
此操作之前,我可以通过代码获得数据:
Traceback (most recent call last): File "1.py", line 21, in results = sparql.query().convert() File "/usr/local/lib/python2.7/site-packages/SPARQLWrapper/Wrapper.py", line 601, in query return QueryResult(self._query()) File "/usr/local/lib/python2.7/site-packages/SPARQLWrapper/Wrapper.py", line 581, in _query raise e urllib2.HTTPError: HTTP Error 401: Unauthorized
我的操作有什么问题吗?用户名和密码都是正确的。
欣赏如果任何人都可以提供帮助。
好吧,我在写完问题几分钟后才找到答案,这让我想起了RTFSC。
线574〜581在Wrapper.py:
elif self.http_auth == DIGEST:
realm = "SPARQL"
pwd_mgr = urllib2.HTTPPasswordMgr()
pwd_mgr.add_password(realm, uri, self.user, self.passwd)
opener = urllib2.build_opener()
opener.add_handler(urllib2.HTTPDigestAuthHandler(pwd_mgr))
urllib2.install_opener(opener)
除了user
和password
,还有另一个varible,realm
(默认值为"SPARQL"
),但VirtSPARQLProtectSQLDigestAuthentication设置境界作为"SPARQL Endpoint"
。
因此,解决方案只是将您的虚拟机的领域改为"SPARQL"
。