首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SPARQLWrapper HTTP错误401:未经授权

SPARQLWrapper HTTP错误401:未经授权
EN

Stack Overflow用户
提问于 2017-05-30 06:24:40
回答 1查看 702关注 0票数 1

根据VirtSPARQLProtectSQLDigestAuthentication,我通过SQL帐户保护了SPARQL端点。

在此操作之前,我可以通过代码获取数据:

代码语言:javascript
复制
from SPARQLWrapper import SPARQLWrapper, JSON, DIGEST   

sparql = SPARQLWrapper("http://example.org/sparql")
sparql.setQuery("...") 
sparql.setReturnFormat(JSON)
results = sparql.query().convert()

在那之后,我用摘要的方式来获取数据,

代码语言:javascript
复制
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:

回溯(最近一次调用):文件"1.py",第21行,在results = sparql.query().convert()文件.convert第601行中,在查询返回QueryResult(self._query())文件.convert第581行中,在_query中提起e urllib2.HTTPError: HTTP错误401:未经授权

我的行动有什么问题吗?用户名和密码都是正确的。

如果有人能帮忙的话。

EN

回答 1

Stack Overflow用户

发布于 2017-05-30 07:21:29

嗯,我写这个问题几分钟后就找到了答案,这又让我想起了RTFSC。

Wrapper.py中的第574~581行:

代码语言:javascript
复制
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)

除了userpassword之外,还有另一个变量realm。(默认值是"SPARQL"),但是VirtSPARQLProtectSQLDigestAuthentication将领域设置为"SPARQL Endpoint"

因此,解决方案只是将您的虚拟领域更改为"SPARQL"

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44254935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档