Итак, я работаю с блоком кода, который связывается с Flickr API.
Я получаю «синтаксическую ошибку» в xml.parsers.expat.ExpatError
(ниже).Теперь я не могу понять, как это будет синтаксическая ошибка в модуле Python.
Я видел еще один похожий вопрос на SO, касающийся API Википедии, который, похоже, возвращал HTML intead XML.Flickr API возвращает XML;и я также получаю ту же ошибку, когда не должно быть ответа от Flickr (например, flickr.galleries.addPhoto
)
CODE:
def _dopost(method, auth=False, **params):
#uncomment to check you aren't killing the flickr server
#print "***** do post %s" % method
params = _prepare_params(params)
url = '%s%s/%s' % (HOST, API, _get_auth_url_suffix(method, auth, params))
payload = 'api_key=%s&method=%s&%s'% \
(API_KEY, method, urlencode(params))
#another useful debug print statement
#print url
#print payload
return _get_data(minidom.parse(urlopen(url, payload)))
TRACEBACK:
Traceback (most recent call last):
File "TESTING.py", line 30, in <module>
flickr.galleries_create('test_title', 'test_descriptionn goes here.')
File "/home/vlad/Documents/Computers/Programming/LEARNING/curatr/flickr.py", line 1006, in galleries_create
primary_photo_id=primary_photo_id)
File "/home/vlad/Documents/Computers/Programming/LEARNING/curatr/flickr.py", line 1066, in _dopost
return _get_data(minidom.parse(urlopen(url, payload)))
File "/usr/lib/python2.6/xml/dom/minidom.py", line 1918, in parse
return expatbuilder.parse(file)
File "/usr/lib/python2.6/xml/dom/expatbuilder.py", line 928, in parse
result = builder.parseFile(file)
File "/usr/lib/python2.6/xml/dom/expatbuilder.py", line 207, in parseFile
parser.Parse(buffer, 0)
xml.parsers.expat.ExpatError: syntax error: line 1, column 62
(код от http://code.google.com/p/flickrpy/ по новой лицензии BSD)
ОБНОВЛЕНИЕ:
print urlopen(url, payload)
== <addinfourl at 43340936 whose fp = <socket._fileobject object at 0x29400d0>>
Выполнение urlopen(url, payload).read()
возвращает HTML, который трудно прочитать в терминале: P, но мне удалось разглядеть 'Вы не вошли в систему. '
Странная часть заключается в том, что Flickr не должен ничего возвращать здесь, или, если права доступа являются проблемой, он должен возвращать ошибку 99: User not logged in / Insufficient permissions
, как это происходит с функцией GET (что, как я ожидал, будет действительнымXML).
Я вошел в Flickr (в браузере), и программа должным образом аутентифицирована с разрешениями delete
(опасно, но я хотел избежать проблем с разрешениями.)