J'essaie de faire une application client Web en utilisant twisted mais ayant quelques problèmes avec les cookies. Est-ce que quelqu'un a un exemple que je peux regarder?en utilisant des cookies avec twisted.web.client
Répondre
Il s'avère qu'il n'y a pas de moyen facile afaict Les en-têtes sont stockés dans twisted.web.client.HTTPClientFactory mais non disponible auprès de twisted.web.client.getPage() qui est la fonction conçue pour extraire une page Web. J'ai fini par la réécriture de la fonction:
from twisted.web import client
def getPage(url, contextFactory=None, *args, **kwargs):
fact = client._makeGetterFactory(
url,
HTTPClientFactory,
contextFactory=contextFactory,
*args, **kwargs)
return fact.deferred.addCallback(lambda data: (data, fact.response_headers))
Il est vrai que getPage
ne permet pas facilement accès direct aux en-têtes de demande ou de réponse (juste un exemple de la façon dont getPage
n'est pas une API super génial), les cookies sont réellement soutenu.
cookies = {cookies: tosend}
d = getPage(url, cookies=cookies)
def cbPage(result):
print 'Look at my cookies:', cookies
d.addCallback(cbPage)
Tous les cookies dans le dictionnaire quand il est passé à getPage
sera envoyé. Tous les nouveaux cookies que le serveur définit en réponse à la demande seront ajoutés au dictionnaire.
Vous avez peut-être manqué cette fonctionnalité en regardant getPage
car la signature getPage
n'a pas de paramètre cookies
n'importe où! Cependant, il prend **kwargs
, et c'est ainsi que cookies
est pris en charge: tous les arguments supplémentaires passés à getPage
qu'il ne connaît pas lui-même, il passe à HTTPClientFactory.__init__
. Jetez un oeil à la signature de cette méthode pour voir toutes les choses que vous pouvez passer à getPage
.
from twisted.internet import reactor
from twisted.web import client
def getPage(url, contextFactory=None, *args, **kwargs):
return client._makeGetterFactory(
url,
CustomHTTPClientFactory,
contextFactory=contextFactory,
*args, **kwargs).deferred
class CustomHTTPClientFactory(client.HTTPClientFactory):
def __init__(self,url, method='GET', postdata=None, headers=None,
agent="Twisted PageGetter", timeout=0, cookies=None,
followRedirect=1, redirectLimit=20):
client.HTTPClientFactory.__init__(self, url, method, postdata,
headers, agent, timeout, cookies,
followRedirect, redirectLimit)
def page(self, page):
if self.waiting:
self.waiting = 0
res = {}
res['page'] = page
res['headers'] = self.response_headers
res['cookies'] = self.cookies
self.deferred.callback(res)
if __name__ == '__main__':
def cback(result):
for k in result:
print k, '==>', result[k]
reactor.stop()
def eback(error):
print error.getTraceback()
reactor.stop()
d = getPage('http://example.com', agent='example web client',
cookies={ 'some' : 'cookie' })
d.addCallback(cback)
d.addErrback(eback)
reactor.run()
- 1. Comment obtenir une page http en utilisant des cookies mécanisés?
- 2. C# webRequest utilisant cookies
- 3. Gestion des cookies en Java
- 4. Auto-connexion avec des cookies
- 5. Cookies ASP.NET avec des valeurs multiples - comment?
- 6. Mod Rewrite Problème facile avec des cookies
- 7. Comment effacer les cookies en utilisant python 2.6.x cookielib
- 8. PHP: visites uniques/hits à des éléments spécifiques en utilisant des cookies/ip
- 9. Suivi des redirections et des cookies avec Python
- 10. Comment vérifier si les cookies sont bloqués en utilisant JavaScript
- 11. Problèmes de cookies avec les répertoires virtuels dans IIS (suppression des cookies indésirables)
- 12. Comment gérer les cookies lors des tests avec Webrat?
- 13. Définir/Obtenir des cookies Web
- 14. jQuery en utilisant append avec des effets
- 15. Objective-C Demande web asynchrone avec des cookies
- 16. Travailler avec ASP.NET collection Cookies
- 17. Les cookies interdomaines avec FormsAuthentication
- 18. C#, obtenir les cookies avec des noms différents
- 19. Java EE Filtres pas en mesure d'obtenir des cookies?
- 20. Zend Framework gestion des cookies
- 21. l'appui des sessions sans cookies dans Tomcat
- 22. WinHTTP IWinHttpRequest iface - gestion des cookies - comment obtenir des cookies de réponse?
- 23. Java: Gestion automatique des cookies dans HttpClient?
- 24. frameset - permuter des colonnes avec des lignes en utilisant javascript
- 25. en utilisant des chaînes de format avec sprintf() en C++
- 26. en utilisant des malédictions avec raw_input en python
- 27. Problèmes avec HttpWebRequest/HttpWebResponse et cookies
- 28. Forcer les cookies HttpOnly avec JRun/ColdFusion
- 29. Comment créer des cookies manuellement dans IE
- 30. PHP Sessions/cookies ne stockent pas correctement en utilisant IE6/IE7
Voulez-vous accepter l'une des réponses? –