使用 Python 请求库导入 Qualtrics Responses
Importing Qualtrics Responses using Python Requests library
我正在尝试使用此处显示的 API 将响应的 csv 导入 Qualtrics:https://api.qualtrics.com/docs/import-responses。但是,由于我是 Python 和(扩展)Requests 的菜鸟,我很难弄清楚为什么我一直收到 413。我已经走到这一步了:
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)
formTest 变量的格式是我在查看其他代码库以寻找此 angular 实现时发现的,它可能不适用于代码的 python 版本。我可以成功使用 cUrl,但是 Python 请求,在我目前的情况下是要走的路(出于各种原因)。
在绝望中,我尝试直接将 cUrl 请求转换为 python 请求,但这似乎也没有太大帮助。
以前有人做过这样的事吗?我查看了有关导入联系人等的帖子,但也没有运气(因为需要发送的数据格式不同)。有什么我想念的吗?
最好不要混合 post 数据和文件,而是使用两个单独的词典。对于文件,您应该使用 files=
参数,因为它将 POST 数据编码为多部分表单数据并创建所需的 Content-Type headers。
import requests
url = 'Qualtrics API'
file_path = 'path/to/file'
file_name = 'file.name'
data = {'surveyId':'my_id'}
files = {'file' : (file_name, open(file_path, 'rb'), 'text/csv')}
headers = {'X-API-TOKEN': 'my_token'}
r = requests.post(url, data=data, files=files, headers=headers)
print(r.text)
files['file']
中的第一个值是文件名(可选),然后是文件object,然后是文件内容类型(可选)。
您将在文档中找到更多信息:Requests, POST a Multipart-Encoded File.
我正在尝试使用此处显示的 API 将响应的 csv 导入 Qualtrics:https://api.qualtrics.com/docs/import-responses。但是,由于我是 Python 和(扩展)Requests 的菜鸟,我很难弄清楚为什么我一直收到 413。我已经走到这一步了:
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)
formTest 变量的格式是我在查看其他代码库以寻找此 angular 实现时发现的,它可能不适用于代码的 python 版本。我可以成功使用 cUrl,但是 Python 请求,在我目前的情况下是要走的路(出于各种原因)。
在绝望中,我尝试直接将 cUrl 请求转换为 python 请求,但这似乎也没有太大帮助。
以前有人做过这样的事吗?我查看了有关导入联系人等的帖子,但也没有运气(因为需要发送的数据格式不同)。有什么我想念的吗?
最好不要混合 post 数据和文件,而是使用两个单独的词典。对于文件,您应该使用 files=
参数,因为它将 POST 数据编码为多部分表单数据并创建所需的 Content-Type headers。
import requests
url = 'Qualtrics API'
file_path = 'path/to/file'
file_name = 'file.name'
data = {'surveyId':'my_id'}
files = {'file' : (file_name, open(file_path, 'rb'), 'text/csv')}
headers = {'X-API-TOKEN': 'my_token'}
r = requests.post(url, data=data, files=files, headers=headers)
print(r.text)
files['file']
中的第一个值是文件名(可选),然后是文件object,然后是文件内容类型(可选)。
您将在文档中找到更多信息:Requests, POST a Multipart-Encoded File.