2010-09-15 13 views
0

J'essaie de télécharger du contenu à partir d'un fournisseur de contenu qui me facture chaque fois que j'accède à un document. Le code que j'ai écrit correctement télécharge le contenu et les enregistre dans un fichier local, mais apparemment, il demande le fichier deux fois et je suis en double facturation. Je ne sais pas où le fichier est demandé deux fois, voici mon code:Aide avec Python urllib2 et les ouvreurs - Comment faire pour lire seulement 1 fichier distant

password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()   
    # Add the username and password. 
    password_mgr.add_password(None, top_level_url, username, password)   
    handler = urllib2.HTTPBasicAuthHandler(password_mgr)   
    # create "opener" (OpenerDirector instance) 
    opener = urllib2.build_opener(handler)   
    # use the opener to fetch a URL 
    file_stream = opener.open(url)   

    # Open our local file for writing 
    local_file = open(directory + doc_name, "w+") 
    #Write to our local file 
    local_file.write(file_stream.read()) 

je dois savoir comment lire le contenu tout en ne demandant le document une fois. Toute aide serait grandement appréciée.

Répondre

1

Pourrait-il être que demandes le fichier deux fois, mais seulement le télécharge une fois? La première requête serait un GET normal (sans en-tête "Authorization"), suivi d'une réponse de HTTP 401 (Authorization Required), suivie de la même requête avec l'en-tête Authorization.

Si c'est le cas, vous devriez parler à votre fournisseur de contenu, puisque vous n'y avez accédé qu'une seule fois.