2017-02-15 3 views
0

Ich versuche, eine Datei zu einem WebDAV-fähigen URL zu setzen. Der Code sieht wie folgt aus:Python 3 401 mit requests.put

headers = {'Authorization':'Basic', 'username': 'doc_iconx', 'password': 'doc_iconx'} 
    id = "SOMEID" 
    pw = "SOMEPW" 
    try: 
     url = 'https://mywebsite.com/Dir/' 
     files = {'upload_file': open(fileName, 'rb')} 
     r = requests.put(url,auth=HTTPDigestAuth(id,pw), files=files, headers={'User-Agent': 'Mozilla' 
    }) 

ich zurück:

<title>401 Unauthorized</title> 
</head><body> 
<h1>Unauthorized</h1> 
<p>This server could not verify that you 
are authorized to access the document 
requested. Either you supplied the wrong 
credentials (e.g., bad password), or your 
browser doesn't understand how to supply 
the credentials required.</p> 
</body></html> 

ich weiß, ist die ID/Passwort gut, weil ich eine Put mit tun können curl

Irgendwelche Ideen?

+0

Von dem, was ich sehe, sollten Sie wahrscheinlich HTTPBasicAuth anstelle von HTTPDigestAuth verwenden. Sie erwähnen auch "post", aber in Ihrer Probe machen Sie einen 'put'. – sal

+0

Danke für das Hinweis auf meinen Tippfehler. Ich korrigierte die Beschreibungen zu .put. – user3670332

+0

Mit HTTPBasicAuth versucht. Jetzt bekomme ich einen: 409 Client Fehler: Konflikt für URL: https://content-qa.homedepot.com/IconX/Report/ – user3670332

Antwort

0

Da Ihr Authentifizierungsschema ist Basic verwenden, alles, was Sie tun müssten ist HTTPBasicAuth statt HTTPDigestAuth zu verwenden:

r = requests.put(url,auth=HTTPBasicAuth(id,pw), files=files, headers={'User-Agent': 'Mozilla'}) 

für die requests tatsächlich auch eine Verknüpfung hat, durch den Modus nicht spezifiziert:

r = requests.put(url,auth=(id,pw), files=files, headers={'User-Agent': 'Mozilla'}) 
0

Ich hatte zwei verschiedene Probleme. Sal, korrigierte meinen Auth-Fehler. Der zweite Fehler war ein dummer Benutzerfehler. Ich muss den Dateinamen hinzufügen, der am Ende der URL hochgeladen werden soll. Die Art, wie es erstellt wurde, war der Versuch, eine Datei mit dem Namen Bericht zu erstellen. Allerdings ist Report ein existierendes Verzeichnis, in dem ich die Datei schreiben wollte.

+0

Froh, dass alles funktioniert. Bitte denken Sie darüber nach, meine Antwort zu akzeptieren, da das ursprüngliche Problem behoben wurde. – sal