Como posso enviar / publicar um arquivo xml em um servidor local http: // localhost: 8080 usando curl na linha de comando?
Que comando devo usar?
fonte
Como posso enviar / publicar um arquivo xml em um servidor local http: // localhost: 8080 usando curl na linha de comando?
Que comando devo usar?
Se essa pergunta estiver conectada às outras perguntas do Hudson, use o comando que elas fornecem. Dessa forma, com o XML na linha de comando:
$ curl -X POST -d '<run>...</run>' \
http://user:pass@myhost:myport/path/of/url
Você precisa alterá-lo um pouco para ler um arquivo:
$ curl -X POST -d @myfilename http://user:pass@myhost:myport/path/of/url
Leia a página de manual . seguindo um resumo para -d Parameter.
-d / - dados
(HTTP) Envia os dados especificados em uma solicitação POST para o servidor HTTP, da mesma forma que um navegador quando um usuário preencheu um formulário HTML e pressiona o botão Enviar. Isso fará com que o curl transmita os dados para o servidor usando o aplicativo do tipo de conteúdo / x-www-form-urlencoded. Compare com o formulário -F / -.
-d / - dados são os mesmos que --data-ascii. Para postar dados puramente binários, você deve usar a opção --data-binary. Para codificar por URL o valor de um campo de formulário, você pode usar --data-urlencode.
Se qualquer uma dessas opções for usada mais de uma vez na mesma linha de comando, as partes de dados especificadas serão mescladas com um símbolo & de separação. Portanto, o uso de '-d name = daniel -d skill = péssimo' geraria um pedaço de postagem semelhante a 'name = daniel & skill = péssimo'.
Se você iniciar os dados com a letra @, o restante deverá ser um nome de arquivo para o qual ler os dados ou - se desejar que o curl leia os dados do stdin. O conteúdo do arquivo já deve estar codificado em URL. Vários arquivos também podem ser especificados. A publicação de dados de um arquivo chamado 'foobar' seria feita com --data @foobar.
The contents of the file must already be URL-encoded.
Os arquivos XML do OP certamente não são.--header "Content-Type:application/xml"
que não são esperados para URL-codificar-L
, não use,-X POST
pois ele fará com que a solicitação redirecionada use POST também. Se você usar apenas -d como @Tai sugere, isso não vai acontecer-d
retira as quebras de linha dos arquivos. Para evitar isso, use em seu--data-binary
lugar.Na página de manual , acredito que estes são os dróides que você está procurando:
Então, no seu caso, isso seria algo como
curl -F file=@/some/file/on/your/local/disk http://localhost:8080
fonte
file=@-
é útil se você quiser tubo de seu arquivo no.Você pode usar a opção --data com o arquivo
Grave o conteúdo xml em um arquivo chamado soap_get.xml e use o comando curl para enviar a solicitação:
fonte
Com o Jenkins 1.494, consegui enviar um arquivo para um parâmetro de trabalho no Ubuntu Linux 12.10 usando
curl
com os--form
parâmetros:No servidor Jenkins, configurei um trabalho que aceita um único parâmetro: um parâmetro de upload de arquivo chamado
myfileparam
.A primeira linha dessa chamada curl constrói um formulário da Web com um parâmetro chamado
myfileparam
(o mesmo que no trabalho); seu valor será o conteúdo de um arquivo no sistema de arquivos local chamado/local/path/to/your/file.txt
. O@
prefixo do símbolo diz ao curl para enviar um arquivo local em vez do nome do arquivo especificado.A segunda linha define uma solicitação JSON que corresponde aos parâmetros do formulário na linha um: um parâmetro de arquivo nomeado
myfileparam
.A terceira linha ativa o botão Compilar do formulário. A quarta linha é a URL do trabalho com o sufixo "/ build".
Se esta chamada for bem-sucedida, a curvatura retornará
0
. Se não der certo, o erro ou exceção do serviço é impresso no console. Essa resposta leva muito de um post antigo relacionado ao Hudson , que eu desconstruí e retrabalhei para minhas próprias necessidades.fonte
Veja como você pode POST XML no Windows usando a linha de comando curl no Windows. Melhor usar o arquivo batch / .cmd para isso:
fonte
Se você tiver vários cabeçalhos, poderá usar o seguinte:
fonte
Você pode usar este comando:
fonte
Se você estiver usando curl no Windows:
fonte