Comment envoyer / publier un fichier xml sur un serveur local http: // localhost: 8080 en utilisant curl depuis la ligne de commande?
Quelle commande dois-je utiliser?
la source
Comment envoyer / publier un fichier xml sur un serveur local http: // localhost: 8080 en utilisant curl depuis la ligne de commande?
Quelle commande dois-je utiliser?
Si cette question est connectée à vos autres questions Hudson, utilisez la commande qu'elles 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 un fichier:
$ curl -X POST -d @myfilename http://user:pass@myhost:myport/path/of/url
Lisez la page de manuel . suivant un résumé pour -d Parameter.
-d / - données
(HTTP) Envoie les données spécifiées dans une demande POST au serveur HTTP, de la même manière qu'un navigateur lorsqu'un utilisateur a rempli un formulaire HTML et appuie sur le bouton Soumettre. Cela entraînera curl à transmettre les données au serveur à l'aide de l'application de type de contenu / x-www-form-urlencoded. Comparer au formulaire -F / -.
-d / - les données sont les mêmes que --data-ascii. Pour publier des données purement binaires, vous devez plutôt utiliser l'option --data-binary. Pour encoder en URL la valeur d'un champ de formulaire, vous pouvez utiliser --data-urlencode.
Si l'une de ces options est utilisée plusieurs fois sur la même ligne de commande, les éléments de données spécifiés seront fusionnés avec un symbole & séparateur. Ainsi, l'utilisation de «-d nom = daniel -d compétence = moche» générerait un bloc de message qui ressemble à «nom = daniel et compétence = moche».
Si vous démarrez les données avec 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 depuis stdin. Le contenu du fichier doit déjà être encodé en URL. Plusieurs fichiers peuvent également être spécifiés. La publication des données d'un fichier nommé 'foobar' se ferait donc avec --data @foobar.
The contents of the file must already be URL-encoded.
Les fichiers XML d'OP ne le sont certainement pas.--header "Content-Type:application/xml"
vous ne devez pas coder-L
, ne l' utilisez pas-X POST
car cela fera que la demande redirigée utilisera aussi POST. Si vous utilisez simplement -d comme @Tai le suggère, cela ne se produira pas-d
sauts de ligne sont supprimés des fichiers. Pour éviter cela, utilisez--data-binary
plutôt.D'après la page de manuel , je pense que ce sont les droïdes que vous recherchez:
Donc, dans votre cas, ce serait quelque chose comme
curl -F file=@/some/file/on/your/local/disk http://localhost:8080
la source
file=@-
est utile si vous souhaitez rediriger votre fichier vers.Vous pouvez utiliser l'option --data avec le fichier.
Écrivez le contenu xml dans un fichier nommé soap_get.xml et utilisez la commande curl pour envoyer la demande:
la source
Avec Jenkins 1.494, j'ai pu envoyer un fichier à un paramètre de tâche sur Ubuntu Linux 12.10 en utilisant
curl
avec des--form
paramètres: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
(identique à celui du travail); sa valeur sera le contenu d'un fichier sur le système de fichiers local nommé/local/path/to/your/file.txt
. 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 demande JSON qui correspond aux paramètres du formulaire sur 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 réussit, curl revient
0
. S'il échoue, l'erreur ou l'exception du service est imprimée sur la console. Cette réponse prend beaucoup d' un ancien billet de blog concernant Hudson , que j'ai déconstruit et retravaillé pour mes propres besoins.la source
Voici comment vous pouvez POST XML sur Windows en utilisant la ligne de commande curl sur Windows. Mieux vaut utiliser le fichier batch / .cmd pour cela:
la source
Si vous avez plusieurs en-têtes, vous pouvez utiliser les éléments suivants:
la source
Vous pouvez utiliser cette commande:
la source
Si vous utilisez curl sous Windows:
la source