http - multiple - curl post php
¿Cómo PUESO datos XML con curl (4)
Quiero publicar datos XML con cURL. No me importan los formularios como dice en Cómo hago una solicitud de publicación con curl .
Quiero publicar contenido XML en algún servicio web usando la interfaz de línea de comando cURL. Algo como:
curl -H "text/xml" -d "<XmlContainer xmlns=''sads''..." http://myapiurl.com/service.svc/
Sin embargo, la muestra anterior no puede ser procesada por el servicio.
Ejemplo de referencia en 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());
}
¿Has probado la codificación de url de los datos? cURL puede encargarse de eso por usted:
curl -H "Content-type: text/xml" --data-urlencode "<XmlContainer xmlns=''sads''..." http://myapiurl.com/service.svc/
Es más sencillo usar un archivo ( req.xml
en mi caso) con el contenido que desea enviar, como este:
curl -H "Content-Type: text/xml" -d @req.xml -X POST http://localhost/asdf
También debería considerar usar el tipo ''application / xml'' (las diferencias se explican here )
Alternativamente, sin necesidad de hacer que curl realmente lea el archivo, puede usar cat
para escupir el archivo en el stdout y hacer curl
para leer desde stdout de esta manera:
cat req.xml | curl -H "Content-Type: text/xml" -d @- -X POST http://localhost/asdf
Ambos ejemplos deben producir resultados de servicio idénticos.
Permítanme lo siguiente:
cat req.xml | curl -X POST -H ''Content-type: text/xml'' -d @- http://www.example.com
o
curl -X POST -H ''Content-type: text/xml'' -d @req.xml http://www.example.com
o
curl -X POST -H ''Content-type: text/xml'' -d ''<XML>data</XML>'' http://www.example.com
-H "text/xml"
no es un encabezado válido. Debe proporcionar el encabezado completo:
-H "Content-Type: text/xml"