Solicitação da API retorna text/html e não um objeto json

Conforme o guia maravilhoso do @sam, encontrei o endpoint correto para a minha solicitação desejada:

https://domain.com/admin/reports/bulk?reports[dau_by_mau][facets][]=prev_period&reports[dau_by_mau][start_date]=2022-07-27&reports[dau_by_mau][end_date]=2022-08-28&reports[dau_by_mau][limit]=50

Não encontrei nenhum cabeçalho de formulário presente e presumi que nenhum seria necessário. Esta solicitação nas Ferramentas de Desenvolvedor resulta em uma resposta JSON, exatamente a que eu quero/preciso. Estou tentando fazer uma solicitação GET em Python:

url = "https://domain.com/admin/reports/bulk?reports[dau_by_mau][facets][]=prev_period&reports[dau_by_mau][start_date]=2022-07-27&reports[dau_by_mau][end_date]=2022-08-28&reports[dau_by_mau][limit]=50.json"
headers = CaseInsensitiveDict()
headers["Content-Type"] = "multipart/form-data"
headers["Content-Type"] = "application/json"
headers["Api-Key"] = SECRET.API
headers["Api-Username"] = "system"

resp = requests.get(url, headers=headers)

print(resp.status_code)
print(resp.headers)

Eu recebo um 200, mas ele retorna com um 'Content-Type': 'text/html, e não um JSON (que é o que eu quero). E nem tenho certeza se o texto que ele retorna é a versão de texto dos dados desejados.

Também não ajudou.

Então, o que estou fazendo de errado?

1 curtida

Você tem um cabeçalho duplicado:

Content-Type é sobre o que você envia, e Accept é sobre o que você quer em troca.
Então você precisará mudar isso para

headers["Content-Type"] = "multipart/form-data"
headers["Accept"] = "application/json"
5 curtidas

Desculpe, é um vestígio não relacionado. Tive um problema sem o segundo cabeçalho.

Este funciona. Obrigado!

2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.