使用Python请求库

时间:2017-05-22 20:38:27

标签: python python-requests qualtrics

我正在尝试使用此处显示的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变量的格式是我通过其他代码库查找的角度实现时发现的,这可能不适用于代码的python版本。我可以成功使用cUrl,但Python请求,在我目前的情况下是出路(由于各种原因)。

在绝望中,我尝试直接将cUrl请求转换为python请求,但这似乎也没什么帮助。

以前有人做过这样的事吗?我看了一下导入联系人等的帖子,但也没有运气(因为需要发送的数据格式不同)。有什么我想念的吗?

1 个答案:

答案 0 :(得分:0)

不要混合发布数据和文件,它们应该是两个单独的词典 使用class Data(object): def __new__(cls, filename): if not os.path.exists(filename): # create new return super(Data, cls).__new__(cls, filename, _save=True) else: with open(filename, 'rb') as fp: return pickle.load(fp) def __init__(self, filename, _save=False): # [... expensive computations] if _save: self.save(filename) 参数发布文件。

files

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) 中的第一个值是文件名,后跟文件对象,后跟文件内容Content-Type。 您可以在此处找到更多信息:post-a-multipart-encoded-file