La requête API renvoie text/html et non un objet json

Per le magnifique guide de @sam, j’ai trouvé le bon point de terminaison pour ma requête souhaitée :

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

Je n’ai trouvé aucun en-tête de formulaire, et j’ai supposé qu’aucun n’était nécessaire. Cette requête dans les outils de développement renvoie une réponse JSON, exactement celle que je veux/besoin. J’essaie de faire une requête GET en 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)

J’obtiens un 200, mais il renvoie avec un 'Content-Type': 'text/html, et non un JSON (ce que je veux). Et je ne suis même pas sûr que le texte qu’il renvoie soit la version texte des données souhaitées.

Cela n’a pas non plus aidé.

Alors, qu’est-ce que je fais de mal ?

1 « J'aime »

Vous avez un en-tête en double :

Content-Type concerne ce que vous envoyez, et Accept concerne ce que vous attendez en retour.
Vous devrez donc changer ceci en

headers["Content-Type"] = "multipart/form-data"
headers["Accept"] = "application/json"
5 « J'aime »

Désolé, c’est une relique sans rapport. J’ai eu un problème sans le second en-tête.

Celui-ci fonctionne. Merci !

2 « J'aime »

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