J'écris un script batch qui devrait envoyer une requête avec json.Comment envoyer une requête POST avec le corps json via curl à partir du script batch Windows
call curl -X POST -H 'Content-type: application/json' --data '{"text": "Pull requests:\n%linksText% has been deployed to %stagingServerUrl%", "username": "Staging Server"}' http://requestb.in/ovehwtov
je lance mon script bash git et alhought il envoie la requête, le corps est malformé et juste avant qu'il envoie la demande, je vois des erreurs dans la console:
curl: (6) Couldn't resolve host 'application'
curl: (6) Couldn't resolve host '"Pull'
curl: (6) Couldn't resolve host 'requests:\nhttp'
curl: (6) Couldn't resolve host 'has'
curl: (6) Couldn't resolve host 'been'
curl: (6) Couldn't resolve host 'deployed'
curl: (6) Couldn't resolve host 'to'
curl: (6) Couldn't resolve host 'unicorns2url",'
curl: (6) Couldn't resolve host '"username"'
curl: (6) Couldn't resolve host 'Staging'
curl: (3) [globbing] unmatched close brace/bracket in column 8
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 11 0 2 100 9 6 30 --:--:-- --:--:-- --:--:-- 30ok
Voilà comment ressemble corps:
'{"text":
ce qui n'est pas correct.
Comme vous pouvez le voir je compose JSON à partir de variables, mais ce n'est pas la cause de l'échec: quand je les retire et appelle
call curl -X POST -H 'Content-type: application/json' --data '{"text": "Pull requests has been deployed to", "username": "Staging Server"}' http://requestb.in/ovehwtov
La même erreur se produit.
Cependant, lorsque je copie cette commande à partir de mon script batch et que je la colle directement dans la console git bash Cela fonctionne parfaitement. Ne me demandez pas pourquoi j'exécute le script batch de Windows à partir de git bash, quand je pourrais écrire un script bash en utilisant le langage bash au lieu d'une syntaxe DOS déroutante et déroutante. Je ne m'en suis pas rendu compte quand j'ai commencé à écrire le script et c'est presque terminé (sauf pour cette partie). Comment le faire fonctionner? Merci!
Dans les commandes interprétées par cmd, les jetons contenant des espaces doivent être placés entre guillemets. Essayez 'call curl -X POST -H" Type de contenu: application/json "--data" {'text': 'Tirer les requêtes: \ n% liensText% a été déployé sur% stagingServerUrl%', 'nom d'utilisateur': ' Serveur intermédiaire '} "http: // requestb.in/ovehwtov'. – rojo
Merci, monsieur. Bien que les guillemets simples ne soient pas autorisés dans json, il devrait être 'call curl -X POST -H" Type de contenu: application/json "--data" {\ "text \": \ "Tirer les requêtes: \ n% linksText % a été déployé sur% stagingServerUrl% \ ", \" nom d'utilisateur \ ": \" Serveur de stockage intermédiaire \ "}" http: // requestb.in/qkebavqk' – dKab