Как опубликовать XML-данные с помощью curl

Я хочу опубликовать XML-данные с помощью cURL. Меня не волнуют формы, как сказано в как сделать запрос post с curl.

Я хочу опубликовать XML-контент в некотором веб-сервисе с помощью интерфейса командной строки cURL. Что-то вроде:

curl -H "text/xml" -d "<XmlContainer xmlns='sads'..." http://myapiurl.com/service.svc/

вышеприведенный образец, однако, не может быть обработан службой.


пример ссылки в C#:

WebRequest req = HttpWebRequest.Create("http://myapiurl.com/service.svc/");
req.Method = "POST";
req.ContentType = "text/xml";
using(Stream s = req.GetRequestStream())
{
    using (StreamWriter sw = new StreamWriter(s))
        sw.Write(myXMLcontent);
}
using (Stream s = req.GetResponse().GetResponseStream())
{
    using (StreamReader sr = new StreamReader(s))
        MessageBox.Show(sr.ReadToEnd());
}

4 ответов


-H "text/xml" Не правильный заголовок. Вам нужно предоставить полный заголовок:

-H "Content-Type: text/xml" 

Я perfer следующее:

cat req.xml | curl -X POST -H 'Content-type: text/xml' -d @- http://www.example.com

или

curl -X POST -H 'Content-type: text/xml' -d @req.xml http://www.example.com

или

curl -X POST -H 'Content-type: text/xml'  -d '<XML>data</XML>' http://www.example.com 

проще использовать файл (req.xml в моем случае) с контентом, который вы хотите отправить -- вот так:

curl -H "Content-Type: text/xml" -d @req.xml -X POST http://localhost/asdf

вы также должны рассмотреть возможность использования типа " application / xml "(различия объяснены здесь)

кроме того, без необходимости делая завиток на самом деле читать файл, вы можете использовать cat чтобы выплюнуть файл в stdout и сделать curl читать из stdout следующим образом:

cat req.xml | curl -H "Content-Type: text/xml" -d @- -X POST http://localhost/asdf

оба примера должны произведите идентичный выход обслуживания.


вы пробовали url-кодирование данных ? cURL может позаботиться об этом для вас:

curl -H "Content-type: text/xml" --data-urlencode "<XmlContainer xmlns='sads'..." http://myapiurl.com/service.svc/