2010-11-23 25 views
3

J'ai besoin de publier des données XML via curl.exe sous windows en utilisant la requête PUT.Comment envoyer une requête PUT sous Windows en utilisant curl?

Dans l'aide boucle j'ai trouvé:

-d/- données < données > données HTTP POST (H)

Que dois-je fournir pour < données >?

+2

N'a pas utilisé curl avec cette option, mais selon le manuel, c'est simplement une chaîne qui est passée au serveur en tant que corps d'entité. Si vos données commencent par '@', ce qui suit est le nom du fichier qui sera lu et envoyé au serveur. Vérifiez la page man: http://curl.haxx.se/docs/manpage.html –

+0

@Peter Štibraný Merci! a négligé ceci - bien que ce soit quelque chose de spécifique pour la syntaxe de ligne de commande d'UNIX et il n'y a pas de fenêtres. – sergtk

Répondre

14

échantillon curl appelle

 
# with inlining plain data 
curl -X PUT -d "payload" http://localhost 
# referrring file 
curl -X PUT -d @myXmlFile.xml http://localhost 

Si vos fenêtres curl-port ne supporte pas aller pour cygwin. C'est un environnement semblable à Linux pour les fenêtres et offre également une boucle "propre".

+0

J'ai essayé cygwin et j'ai obtenu une erreur avec getaddrinfo. Ran sur un autre PC - tout va bien. – sergtk

+0

alors cela ressemble à un problème avec votre machine ou votre réseau? L'autre PC quel OS est-il, aussi windows? –

+0

J'ai aussi eu du mal à publier des données à partir du fichier sur windows et à la fin j'ai trouvé mon fichier de données en UTF8 (commençant par FF FE bytes) donc j'ai dû utiliser '--data-binary' au lieu de juste -d' (qui est un alias pour '--data'). – eXavier

6

Dans Windows, si un argument entre guillemets contient lui-même un guillemet double, le guillemet double doit être doublé.

Par exemple, entrez 'Ceci est "cité" payload' comme "This is" "quoted" "payload" qui est très différent de celui d'Unix.

Exemple:

curl -X PUT -d "This is ""quoted"" payload" http://localhost 
2

dans les fenêtres que vous aurez besoin de mettre le @intérieur les citations pour le fichier que vous envoyez:

curl -XPUT --data-binary "@uploadme.txt" 

sinon vous obtiendrez des erreurs étranges comme il essaie d'utiliser le contenu du fichier comme l'URL:

curl: (6) Couldn't resolve host 'upload' 
curl: (6) Couldn't resolve host 'me!' 

(uploadme.txt contient "upload me!")

+1

C'était la mise du @ insde les citations qui m'a fait deviner pendant des heures. Merci Paul –

+1

Merci de préciser que le @ devait être mis à l'intérieur des guillemets. Je me suis cogné la tête sur le clavier depuis quelques heures en essayant de comprendre cela. Merci encore –