2017-05-22 3 views
0

Ich versuche, eine CSV-Antwort in Qualtrics mithilfe der hier gezeigten API zu importieren: https://api.qualtrics.com/docs/import-responses. Aber, da ich ein Noob in Python und (nach Erweiterung) bin bei Anfragen, ich habe Probleme, herauszufinden, warum ich immer ein 413. bekommen habe ich so weit gekommen:Importieren von Qualtrics-Antworten mit der Python-Requests-Bibliothek

formTest = { 
    'surveyId': 'my_id', 
    'file': { 
     'value': open('dataFiles/myFile.csv', 'rb'), 
     'options': { 
      'contentType': 'text/csv' 
     } 
    } 
} 

headersTest = { 
    "X-API-TOKEN": "my_token", 
    'content-type': "multipart/form-data" 
} 

r = requests.request("POST", url, data=formTest, headers=headersTest) 
print(r.text) 

Das Format für die formTest-Variable ist etwas, das ich gefunden habe, wenn ich durch andere Codebasen nach einer kantigen Implementierung gesucht habe, die möglicherweise nicht auf eine Python-Version des Codes zutrifft. Ich kann erfolgreich cUrl, aber Python Requests, in meiner aktuellen Situation ist der Weg zu gehen (aus verschiedenen Gründen).

In einem Anfall von Verzweiflung versuchte ich direkt die cUrl-Anfrage in Python-Anfragen zu übersetzen, aber das schien auch nicht viel zu helfen.

Hat jemand so etwas schon einmal gemacht? Ich habe mir Posts zum Importieren von Kontakten und ähnlichem angesehen, aber auch dort gab es kein Glück (da die Daten, die gesendet werden müssen, unterschiedlich formatiert sind). Gibt es etwas, das mir fehlt?

Antwort

0

Nicht Postdaten und Dateien mischen, sie sollten zwei separate Wörterbücher sein.
Verwenden Sie den Parameter files, um Dateien zu veröffentlichen.

formTest = { 'surveyId':'my_id' } 
filesTest = {'file' : ('myFile.csv', open('dataFiles/myFile.csv', 'rb'), 'text/csv')} 
headersTest = { "X-API-TOKEN": "my_token" } 

r = requests.request("POST", url, data=formTest, files=filesTest, headers=headersTest) 
print(r.content) 

Der erste Wert in filesTest['file'] ist der Dateiname, das Dateiobjekts, gefolgt von dem Dateiinhalt Content-Type gefolgt.
Weitere Informationen finden Sie hier: post-a-multipart-encoded-file

Verwandte Themen