Ошибка неправильного запроса Python при вызове Eloqua API — форматирование JSON

Когда я пытаюсь получить доступ к Eloqua API с помощью следующего кода, я получаю ошибку 400. Служба поддержки Eloqua сообщает мне следующее:

«Похоже, что ошибка 400 вызвана использованием незнакомого формата в теле запроса. Мы рекомендуем использовать форму JSON при необходимости».

Есть ли что-то в этом вызове, что не помещает тело вызова в формат JSON? Как я могу это сделать?

auth = auth_string.encode('base64','strict')

url='https://secure.p03.eloqua.com/api/bulk/2.0/activities/exports'
data= {"name":"Activity Export Test", 
"fields":{
      "ActivityId":"{{Activity.Id}}",
   }, 
"filter":"'{{Activity.Type}}'='Subscribe'"}
data2 = json.dumps(data)
headers = {'Authorization': "Basic %s" % auth}
r =  requests.post(url, data=data2, headers=headers)

person mcseare    schedule 30.01.2015    source источник
comment
Вы пытались использовать заголовок: «Content-type»: application/json вместе с заголовком авторизации.   -  person Kutoff    schedule 30.01.2015
comment
Вы пробовали print data2 проверить форматирование данных прямо перед передачей в API?   -  person Paul Lo    schedule 30.01.2015


Ответы (1)


Вам не хватает заголовка Content-Type. Попробуйте добавить его, например:

headers = {
    "Authorization": "Basic %s" % auth,
    "Content-Type": "application/json"
}
person nofinator    schedule 30.01.2015