Domanda

Il prodotto che sto lavorando su piste in cima a Google App Engine. Esso contiene il codice simile a questo:

    result = urlfetch.fetch(url, **parms)
    log('%s' %result.final_url)

Questa restituisce sempre Nessuno. Nella documentazione si dice che restituirà l'URL corretto. Ma questo sembra essere un problema. Non posso usare l'URL dato dato che c'è un sacco di 302 accadendo in mezzo.

Qualcuno sa come risolvere lo stesso?

È stato utile?

Soluzione

Test su shell.appspot.com dimostra che final_url è riempito in se e solo se un redirect è stato seguito, e viene lasciato vuoto se non fosse stato:

>>> from google.appengine.api import urlfetch
>>> urlfetch.fetch('http://google.com/').final_url
'http://www.google.com/'
>>> urlfetch.fetch('http://www.google.com/').final_url

Quindi, per ottenere l'URL finale, solo fare questo:

result = urlfetch.fetch(url, **parms)
final_url = result.final_url or url
log('%s' % final_url)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top