Tableau에서 제공 한 샘플 코드를 사용하여 Tableau Rest API를 사용하여 신뢰할 수있는 토큰을 인증하고 생성하려고합니다. 내가 파이썬 V2.7 아래Python을 사용하여 Tableau Rest API를 인증 및 포함하십시오. 2.7
을 사용하고 은 (극적 장면에서 제공하는 샘플과 동일) 코드입니다 - :
try:
from urllib.request import urlopen, Request
except ImportError:
from urllib2 import urlopen, Request
import xml.etree.ElementTree as ET # For parsing XML responses
server_name = "http://dashboard.crgroup.com"
user_name = "abc"
password = "abc"
site_url_id = "default_site"
signin_url = "http://{server}/api/2.4/auth/signin".format(server=server_name)
request_xml = ET.Element('tsRequest')
credentials = ET.SubElement(request_xml, 'credentials',
name=user_name, password=password)
site_element = ET.SubElement(credentials, 'site',
contentUrl=site_url_id)
request_data = ET.tostring(request_xml)
req = Request(signin_url, data=request_data)
req = urlopen(req)
server_response = req.read()
response_xml = ET.fromstring(server_response)
token = response_xml.find('.//t:credentials',
namespaces={'t': "http://tableau.com/api"}).attrib['token']
site_id = response_xml.find('.//t:site',
namespaces={'t': "http://tableau.com/api"}).attrib['id']
print('Sign in successful!')
print('\tToken: {token}'.format(token=token))
print('\tSite ID: {site_id}'.format(site_id=site_id))
headers = {'X-tableau-auth': token}
signout_url = "http://{server}/api/2.4/auth/signout".format(server=server_name)
req = Request(signout_url, headers=headers, data=b'')
req = urlopen(req)
print('Sign out successful!')
하지만 추적 조사로 오류가 점점 오전 :
Traceback (most recent call last):
File "C:/Extract Api/testapi.py", line 42, in <module>
req = urlopen(req)
File "C:\Python27\lib\urllib2.py", line 154, in urlopen
return opener.open(url, data, timeout)
File "C:\Python27\lib\urllib2.py", line 429, in open
response = self._open(req, data)
File "C:\Python27\lib\urllib2.py", line 447, in _open
'_open', req)
File "C:\Python27\lib\urllib2.py", line 407, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 1228, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "C:\Python27\lib\urllib2.py", line 1198, in do_open
raise URLError(err)
URLError: <urlopen error [Errno 11001] getaddrinfo failed>
올바른 사용자 이름/암호를 사용하고 있다고 확신합니다. 또한 브라우저를 사용하여 URL에 액세스 할 수 있습니다.
친절히 제안합니다.
'signin_url = "http : // {server} /api/2.4/auth/signin".format (server = server_name)'을 실행 한 후에'signin_url'을 기록 할 수 있습니까? 그러면'signin_url'의 값은 무엇입니까? 'http : // dashboard.crgroup.com/api/2.4/auth/signin'이어야합니다.하지만 두 번 확인하는 것이 좋습니다. – Tayler