Comment puis-je envoyer un fichier XML vers un serveur local ? http://localhost:8080
en utilisant cURL à partir de la ligne de commande ?
Quelle commande dois-je utiliser ?
Comment puis-je envoyer un fichier XML vers un serveur local ? http://localhost:8080
en utilisant cURL à partir de la ligne de commande ?
Quelle commande dois-je utiliser ?
Si cette question est liée à vos autres questions sur Hudson, utilisez la commande qu'ils fournissent. De cette façon avec XML à partir de la ligne de commande :
$ curl -X POST -d '<run>...</run>' \
http://user:pass@myhost:myport/path/of/url
Vous devez le modifier un peu pour lire depuis un fichier :
$ curl -X POST -d @myfilename http://user:pass@myhost:myport/path/of/url
Lire l'article page d'accueil . suivant un résumé pour -d Paramètre.
-d/--data
(HTTP) Envoie les données spécifiées dans une requête demande POST au serveur HTTP, de la même de la même manière qu'un navigateur le fait lorsque un utilisateur a rempli un formulaire HTML et appuie sur le bouton d'envoi. Cette opération curl transmettra les données au serveur serveur en utilisant le type de contenu application/x-www-form-urlencoded. Comparez avec -F/--form.
-d/--data est identique à --data-ascii. Pour afficher des données purement binaires, vous devez utiliser l'option --data-binary. Pour coder en URL la valeur d'un champ de formulaire vous pouvez utiliser --data-urlencode.
Si l'une de ces options est utilisée plus plusieurs fois sur la même ligne de commande, les éléments de données spécifiés seront fusionnés ensemble avec un symbole séparateur &-symbole. Ainsi, en utilisant '-d name=daniel -d skill=lousy' génère un fragment de message qui ressemble à name=daniel&skill=lousy'.
Si vous commencez les données par la lettre @, le reste doit être un nom de fichier pour lire les données, ou - si vous voulez que curl lise les données à partir de stdin. Le contenu du fichier contenu du fichier doit déjà être encodé en URL. Plusieurs fichiers peuvent également être spécifiés. L'affichage des données d'un fichier nommé 'foobar' se fera donc avec --data @foobar.
Merci beaucoup Peter !! vous avez vu juste. c'est lié à cela seulement et vous avez tout à fait raison. merci encore. :-)
Lisez la page de manuel. The contents of the file must already be URL-encoded.
Les fichiers XML de l'OP ne le sont sûrement pas.
Tant que vous spécifiez le type de contenu --header "Content-Type:application/xml"
vous n'êtes pas censé Codage de l'URL
De la page d'accueil Je crois que ce sont les droïdes que vous cherchez :
-F/--form <name=content>
(HTTP) Ceci permet à curl d'émuler un formulaire rempli dans lequel l'utilisateur a appuyé sur le bouton "submit". Cela amène curl à POST des données en utilisant le Content-Type multipart/form-data selon la RFC2388. Cela permet de télécharger des fichiers binaires, etc. Pour forcer la partie 'content' à être un fichier, préfixez le nom du fichier avec le signe @.
Exemple, pour envoyer votre fichier de mots de passe au serveur, où 'password' est le nom du champ de formulaire dans lequel /etc/passwd sera entré :
curl -F password=@/etc/passwd www.mypasswords.com
Donc, dans votre cas, ce serait quelque chose commecurl -F file=@/some/file/on/your/local/disk http://localhost:8080
Cette solution présente l'avantage supplémentaire de pouvoir nommer le fichier envoyé (contrairement à la solution choisie ci-dessus), et vous pouvez donc, par exemple, envoyer plusieurs fichiers.
Si vous souhaitez envoyer un fichier et d'autres informations : utilisez -F key=val -F key=val autant de fois que nécessaire. Enfermer tous les paramètres postaux dans une grande chaîne séparée par & ne fonctionne pas.
Avec Jenkins 1.494, j'ai pu envoyer un fichier à un paramètre de travail sur Ubuntu Linux 12.10 en utilisant curl
con --form
paramètres :
curl --form name=myfileparam --form file=@/local/path/to/your/file.xml \
-Fjson='{"parameter": {"name": "myfileparam", "file": "file"}}' \
-Fsubmit=Build \
http://user:password@jenkinsserver/job/jobname/build
Sur le serveur Jenkins, j'ai configuré un travail qui accepte un seul paramètre : un paramètre de téléchargement de fichier nommé myfileparam
.
La première ligne de cet appel curl construit un formulaire web avec un paramètre nommé myfileparam
(comme dans le job) ; sa valeur sera le contenu d'un fichier sur le système de fichiers local nommé /local/path/to/your/file.txt
. El @
Le préfixe du symbole indique à curl d'envoyer un fichier local au lieu du nom de fichier donné.
La deuxième ligne définit une requête JSON qui correspond aux paramètres du formulaire de la première ligne : un paramètre de fichier nommé myfileparam
.
La troisième ligne active le bouton Build du formulaire. La quatrième ligne est l'URL du travail avec le suffixe "/build".
Si cet appel est réussi, curl retourne 0
. S'il échoue, l'erreur ou l'exception du service est imprimée dans la console. Cette réponse reprend beaucoup de un ancien article de blog relatif à Hudson que j'ai déconstruit et retravaillé pour mes propres besoins.
Voici comment vous pouvez POST XML sur Windows en utilisant la ligne de commande curl sur Windows. Il est préférable d'utiliser un fichier batch/.cmd pour cela :
curl -i -X POST -H "Content-Type: text/xml" -d ^
"^<?xml version=\"1.0\" encoding=\"UTF-8\" ?^> ^
^<Transaction^> ^
^<SomeParam1^>Some-Param-01^</SomeParam1^> ^
^<Password^>SomePassW0rd^</Password^> ^
^<Transaction_Type^>00^</Transaction_Type^> ^
^<CardHoldersName^>John Smith^</CardHoldersName^> ^
^<DollarAmount^>9.97^</DollarAmount^> ^
^<Card_Number^>4111111111111111^</Card_Number^> ^
^<Expiry_Date^>1118^</Expiry_Date^> ^
^<VerificationStr2^>123^</VerificationStr2^> ^
^<CVD_Presence_Ind^>1^</CVD_Presence_Ind^> ^
^<Reference_No^>Some Reference Text^</Reference_No^> ^
^<Client_Email^>john@smith.com^</Client_Email^> ^
^<Client_IP^>123.4.56.7^</Client_IP^> ^
^<Tax1Amount^>^</Tax1Amount^> ^
^<Tax2Amount^>^</Tax2Amount^> ^
^</Transaction^> ^
" "http://localhost:8080"
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.