Sujet : Re: Tentative de transcription d'une ligne de commande « Curl » à l'aide de « urllib3 ».
De : alain (at) *nospam* universite-de-strasbourg.fr.invalid (Alain Ketterlin)
Groupes : fr.comp.lang.pythonDate : 20. Jan 2022, 19:25:19
Autres entêtes
Organisation : Université de Strasbourg
Message-ID : <87h79ypbeo.fsf@universite-de-strasbourg.fr.invalid>
References : 1
User-Agent : Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)
Valrik <
nospam@valrik.invalid> writes:
je suis grand débutant en Python, Json et Graphql. Mes questions, donc,
pourront peut-être vous paraître naïves.
Je n'ai aucune idée de ce qu'est graphql.
curl 'https://openapi.radiofrance.fr/v1/graphql?x-token=clé_que_je_ne_peux_pas_rendre_publique_pour_l'instant' -H 'Accept-Encoding: gzip, deflate, br' -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'DNT: 1' -H 'Origin: https://openapi.radiofrance.fr' --data-binary '{"query":"{\n diffusionsOfShowByUrl(url: \"https://www.franceculture.fr/emissions/fictions-theatre-et-cie\", first: 10) {\n\t edges {\n cursor\n node {\n id\n title\n url\n published_date\n podcastEpisode {\n url\n title\n }\n }\n }\n }\n}"}' --compressed
>
À noter que cela fonctionne correctement dans un terminal.
OK.
import urllib3
>
data_binary='{"query":"{\n diffusionsOfShowByUrl(url: \"https://www.franceculture.fr/emissions/fictions-theatre-et-cie\", first: 10) {\n\t edges {\n cursor\n node {\n id\n title\n url\n published_date\n podcastEpisode {\n url\n title\n }\n }\n }\n }\n}"}'
Tu ne fais jamais rien de ces données, alors qu'il me semble qu'elles
doivent partir vers le serveur (en tout cas, c'est ce que fait curl).
http = urllib3.PoolManager()
>
r = http.request(
'GET',
S'il y a des données à transmettre, il faut bien qu'elles soient quelque
part. Avec GET, ce serait dans l'uri.
Mais si j'en crois ta commande curl, c'est en POST qu'elles sont
envoyées (à cause de --data-binary), et c'est du JSON. Jette un oeil à
https://urllib3.readthedocs.io/en/stable/user-guide.html#json 'https://openapi.radiofrance.fr/v1/graphql?x-token=clé_que_je_ne_peux_pas_rendre_publique_pour_l'instant',
headers={
'Accept-Encoding': 'gzip, deflate, br',
'Content-Type': 'application/json',
'Accept': 'application/json',
'Connection': 'keep-alive',
'DNT': '1', # Obsolète.
'Origin': 'https://openapi.radiofrance.fr'
}
)
Je n'est également rien trouvé sur « --compressed », mais je dois avouer
que j'ai fait beaucoup moins de recherche.
Moi je fais "man curl" et je trouve :
| --compressed
| (HTTP) Request a compressed response using one of the algorithms
| curl supports, and save the uncompressed document. If this
| option is used and the server sends an unsupported encoding,
| curl will report an error.
|
Mes 2 cents.
-- Alain.