Estou usando o cURL para colocar alguns dados em um servidor Redmine. Eu quero usar várias --data-xxx
opções para criar um corpo de solicitação XML válido. O comando é assim:
curl -H "Content-Type: application/xml" \
-H "X-Redmine-API-Key: $TOKEN" \
-d "<?xml version=\"1.0\"?><wiki_page><text>" \
--data-binary "@$FILE" \
-d "</text></wiki_page>" \
-X PUT http://some.redmine.site.com/projects/someproj/wiki/test.xml
No entanto, como --data
opção documentada:
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. Assim, o uso
-d name=daniel -d skill=lousy
geraria um post chunk que se parecename=daniel&skill=lousy
.
Compreendo que o designer do cURL faça dessa maneira ajudar a criar um URL com a string de consulta. Mas nessa situação, esses símbolos-e adicionados farão com que meu corpo XML de solicitação esteja malformado. Eu posso acrescentar "nbsp;" para o valor para solucionar isso quando for depois --data
. Mas quando se trata do uso misturado com um arquivo ( --data-binary "@$FILE"
), não há como resolver isso.