Ошибка авторизации при подключении к конечной точке sparql от python - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь подключиться к частной конечной точке SPARQL из ноутбука jupyter. Я новичок в python, и я не уверен, что я делаю неправильно. Я предоставил правильные учетные данные для входа, но когда я пытаюсь обработать результаты, я получаю сообщение об ошибке, которое не могу интерпретировать.

Я проверил, получив доступ к конечной точке из моего браузера и выполнив запрос вручную. Он работает нормально, и я получаю ответ без ошибок тоже. Я не уверен, что мне нужно изменить в request.py и Wrapper.py для обработки этой ошибки.

Заранее спасибо за помощь. Примите это во внимание.

sparql = SPARQLWrapper(" sparql address")
sparql.setHTTPAuth(DIGEST)
sparql.setCredentials("username", "pswd")
sparql.setQuery("""
  --query--
""")
sparql.setReturnFormat(CSV)
results = sparql.query().convert()

---------------------------------------------------------------------------
HTTPError                                 Traceback (most recent call last)
/tmp/ENTER/lib/python3.7/site-packages/SPARQLWrapper/Wrapper.py in _query(self)
    765             else:
--> 766                 response = urlopener(request)
    767             return response, self.returnFormat

/tmp/ENTER/lib/python3.7/urllib/request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context)
    221         opener = _opener
--> 222     return opener.open(url, data, timeout)
    223 

/tmp/ENTER/lib/python3.7/urllib/request.py in open(self, fullurl, data, timeout)
    530             meth = getattr(processor, meth_name)
--> 531             response = meth(req, response)
    532 

/tmp/ENTER/lib/python3.7/urllib/request.py in http_response(self, request, response)
    640             response = self.parent.error(
--> 641                 'http', request, response, code, msg, hdrs)
    642 

/tmp/ENTER/lib/python3.7/urllib/request.py in error(self, proto, *args)
    568             args = (dict, 'default', 'http_error_default') + orig_args
--> 569             return self._call_chain(*args)
    570 

/tmp/ENTER/lib/python3.7/urllib/request.py in _call_chain(self, chain, kind, meth_name, *args)
    502             func = getattr(handler, meth_name)
--> 503             result = func(*args)
    504             if result is not None:

/tmp/ENTER/lib/python3.7/urllib/request.py in http_error_default(self, req, fp, code, msg, hdrs)
    648     def http_error_default(self, req, fp, code, msg, hdrs):
--> 649         raise HTTPError(req.full_url, code, msg, hdrs, fp)
    650 

HTTPError: HTTP Error 401: Unavailable

During handling of the above exception, another exception occurred:

Unauthorized                              Traceback (most recent call last)
<ipython-input-6-14dac11c9be4> in <module>
      1 sparql.setReturnFormat(CSV)
      2 
----> 3 results = sparql.query().convert()
      4 
      5 #for result in results["results"]["bindings"]:

/tmp/ENTER/lib/python3.7/site-packages/SPARQLWrapper/Wrapper.py in query(self)
    796             @rtype: L{QueryResult} instance
    797         """
--> 798         return QueryResult(self._query())
    799 
    800     def queryAndConvert(self):

/tmp/ENTER/lib/python3.7/site-packages/SPARQLWrapper/Wrapper.py in _query(self)
    772                 raise EndPointNotFound(e.read())
    773             elif e.code == 401:
--> 774                 raise Unauthorized(e.read())
    775             elif e.code == 500:
    776                 raise EndPointInternalError(e.read())

Unauthorized: Unauthorized: access is denied due to invalid credentials (unauthorized). Check the credentials. 

PS: Я изменил аутентификацию на BASI C и заменил двойные кавычки в логине и пароле на одинарные кавычки, и теперь я получаю ответ json. Я не уверен, что это был тип аутентификации, который был решением, или сервер, который был перегружен, из-за которого я не получал ответ.

...