Domanda

>>> import gdata.books.service
>>> service = gdata.books.service.BookService()
>>> results = service.search_by_keyword(isbn='0434003484')
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
  results = service.search_by_keyword(isbn='0434003484')
... snip ...
File "C:\Python26\lib\site-packages\atom\__init__.py", line 127, in CreateClassFromXMLString
  tree = ElementTree.fromstring(xml_string)
File "<string>", line 85, in XML
SyntaxError: syntax error: line 1, column 0

Questo è un esempio minimo - in particolare, i test di unità di servizio libro inclusi nel pacchetto sicuro anche con l'esatto stesso errore. Ho guardato il wiki ed emette biglietti aperte su Google Code per inutilmente (e questo mi sembra più adatto a un errore stupido da parte mia piuttosto che un problema con la libreria). Non sono sicuro di come interpretare il messaggio di errore. Se è importante, sto usando python 2.6.5 e l'ultima versione di GData, ovvero 2.0.10.

È stato utile?

Soluzione

ho trovato avevo bisogno di disabilitazione di SSL nel client GData per farlo funzionare:

...
gd_client.ProgrammaticLogin()
gd_client.ssl = False
...

Altri suggerimenti

La risposta di sje397 è quella corretta; nel tuo esempio sopra, se si fa:

service.ssl = False

prima di eseguire il metodo search_by_keyword, il risultato viene correttamente restituito. Se non si imposta SSL di essere falsa, poi perché il cliente non ha correttamente autenticato, la richiesta viene reindirizzato alla home page di Google principale (quindi quello che Alex Martelli è stato vedere gli errori nel codice HTML è stato il che si ottiene quando si va a http://www.google.com ... XML sicuramente non ben formato).

Hacking un po 'intorno per vedere la stringa XML, ho notato che ha un minuscolo <!doctype html> alla partenza (dovrebbe essere DOCTYPE maiuscolo) che, ovviamente, sta facendo il parsing XML fallire - sicuramente un bug nel servizio libro che ha bisogno di essere segnalati. Come soluzione temporanea si potrebbe incidere il atom/__init__.xml al cambiamento la linea 127 a ...:

tree = ElementTree.fromstring(xml_string.replace('doctype','DOCTYPE'))

ma mentre che ottiene oltre questo bug nel XML rivela un altro a colonna 496 (credo che sia nel bel mezzo di un codice JavaScript). Credo che ci sia qualcosa di Borken in Bookservice, in generale, a questo punto ...: - (

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top