2010-05-22 16 views
-1

Cela va probablement sembler une question très simple, et je suis assez confus quant à savoir pourquoi c'est si difficile pour moi.Cookies avec urllib

Je voudrais écrire une fonction qui prend trois entrées: [url, data, cookies] qui utilisera urllib (pas urllib2) pour obtenir le contenu de l'URL demandée. Je pensais que ce serait simple, donc j'écrit ce qui suit:

def fetch(url, data = None, cookies = None): 
    if isinstance(data, dict): data = urllib.urlencode(data) 
    if isinstance(cookies, dict): 
    # TODO: find a better way to do this 
    cookies = "; ".join([str(key) + "=" + str(cookies[key]) for key in cookies]) 
    opener = urllib.FancyURLopener() 
    opener.addheader("Cookie", cookies) 
    obj = opener.open(url, data) 
    result = obj.read() 
    obj.close() 
    return result 

Cela ne fonctionne pas, pour autant que je peux dire (quelqu'un peut-il confirmer?) Et je suis perplexe.

+0

Adresse les questions ci-dessous pls – goldisfine

Répondre

1

Vous n'avez pas dit ce qui n'allait pas lorsque vous l'avez essayé, ou quel serveur http vous testez. La demande a-t-elle été complète? Le serveur n'a-t-il pas reconnu vos cookies? Une chose qui saute aux yeux est que vous êtes potentiellement rejoindre plusieurs cookies dans un seul champ d'en-tête. Cela fonctionne-t-il si vous utilisez des champs d'en-tête Cookie: distincts?

+0

Je réalise le problème, il fonctionnait parfaitement, mais ma page de test n'était pas. – skeggse