Экспорт отчета GoodData Python

Хотите подключиться к API Gooddata и экспортировать отчет через API в python. Документация немного сбивает с толку.

Я определил логин для своего экземпляра gooddata:

from urllib2 import Request, urlopen
import json
import requests

def login_gooddata(my_email, my_password):
    url = 'https://secure.gooddata.com/gdc/account/login'    

    values = {
        "postUserLogin": {
            "login": my_email,
            "password": my_password,
            "remember": 0,
            "verify_level": 0
        }
    }

    headers = {
      'Content-Type': 'application/json',
      'Accept': 'application/json'
    }
    encoded_values = json.dumps(values)
    #request = Request(url, data=encoded_values, headers=headers)
    r = requests.post(url, data=encoded_values)    
    return r

Это успешно регистрирует меня, возвращая ответ 200.

Учитывая документацию с сайта gooddata по подключению к API, я пытаюсь экспортировать необработанный файл проекта.

Я установил идентификаторы проекта и объекта:

project_id = 'asibfakuyebkbhdbfaisdf'
object_id = '87234760'


values = {
    "report_req": {
    "reportDefinition": "/gdc/md/"+ project_id + "/obj/" + object_id
    }
  }


headers = {
  'Accept': 'application/json',
  'Content-Type': 'application/json'
}

url = 'https://secure.gooddata.com/gdc/app/projects/' + project_id + '/execute/raw/'

r = requests.post(url, data=json.dumps(values), headers=headers)

request = Request(url, data=json.dumps(values), headers=headers)

response_body = urlopen(requests).read()
print response_body

Я играл с использованием r = requests.post(url, data=encoded_values и request = Request(url, data=encoded_values, headers=headers). Все равно получаю ошибку. Я не совсем уверен, как решить следующие шаги.

Следуйте указаниям, указанным в документации для подключения к API:

введите здесь описание изображения


person Matt W.    schedule 14.03.2018    source источник


Ответы (1)


Вам необходимо выполнить все HTTP-запросы из одного «сеанса», который запоминает файлы cookie из входа в систему: выполните s = requests.Session() один раз, затем используйте s.post вместо requests.post.

Подробнее см. https://stackoverflow.com/a/31571805/3407728.

person Tomáš Janoušek    schedule 14.03.2018