2010-10-29 5 views
15

J'essaye d'envoyer un fichier binaire à un serveur via HTTP. Le début du fichier contient des en-têtes déjàFichier binaire POST avec curl de ligne cmd utilisant les en-têtes contenus dans le fichier

Je suis en train d'envoyer un fichier en utilisant la version en ligne de commande de boucle pour les fenêtres comme ceci:

C:> boucle -H « Content-Type: application/octet- stream "--data-binary @ asdf.file http://server:1234/url

Curl ajoute des en-têtes qui provoquent une 400 Bad Request.

Lorsque j'exécute exactement la même commande à l'aide de la version linux de curl, la publication est-elle terminée?

+2

Je trouve étrange que curl ajoute des en-têtes menant à une mauvaise demande. Vous devriez essayer d'ajouter '-v' pour voir quels en-têtes curl envoie réellement. – flesk

Répondre

21

Utilisez

curl --header "Content-Type:application/octet-stream" --trace-ascii debugdump.txt --data-binary @asdf.file http://server:1234/url 

Ou

ou installez Wireshark Fiddler dans les fenêtres pour voir la demande http qui circule sur le réseau.

Vérifiez les en-têtes et les valeurs envoyées. Curl ajoute peu d'en-têtes par défaut. Ces en-têtes par défaut peuvent être incompatibles/non acceptés par le serveur http auquel vous vous connectez dans le cas de Windows.

Pour modifier la valeur de l'en-tête (ajouté par défaut), vous pouvez ajouter un en-tête suivi d'un point-virgule. Par exemple, Content-Type; pour définir la valeur null.

+0

J'avais un problème avec suhosin sur PHP. _ALERT - configuration de la variable de demande nom limite de longueur dépassée - variable supprimée_ Le type de contenu par défaut est application/x-www-form-urlencoded et si vous ne le spécifiez pas explicitement, vous pouvez déclencher des règles de confidentialité sur certains serveurs. Cela a réglé le problème pour moi. – Phil

+0

Enfin quelqu'un sait-il comment définir le nom de fichier du côté de la destination? 'cat /tmp/12047.csv | curl -v -X POST --header "Type de contenu: application/octet-stream" --data-binaire @ - someUrl'? – Nick

Questions connexes