2009-05-16 16 views
94

¿Cómo puedo hacer un CORREO POST en PHP usando cURL?POSTE SIN PROCESAR usando cURL en PHP

Publicación sin procesar como en sin ninguna codificación, y mis datos se almacenan en una cadena. Los datos deben tener el formato siguiente manera:

... usual HTTP header ... 
Content-Length: 1039 
Content-Type: text/plain 

89c5fdataasdhf kajshfd akjshfksa hfdkjsa falkjshfsa 
ajshd fkjsahfd lkjsahflksahfdlkashfhsadkjfsalhfd 
ajshdfhsafiahfiuwhflsf this is just data from a string 
more data kjahfdhsakjfhsalkjfdhalksfd 

Una opción es escribir manualmente toda la cabecera HTTP que se envía, pero que parece menos óptima.

De todos modos, ¿puedo pasar opciones a curl_setopt() que digan usar POST, usar texto/normal, y enviar los datos brutos de $variable?

Respuesta

171

Acabo de encontrar la solución, como responder a mi propia pregunta en caso de que alguien más se tropiece con ella.

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL,   "http://url/url/url"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST,   1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,  "body goes here"); 
curl_setopt($ch, CURLOPT_HTTPHEADER,  array('Content-Type: text/plain')); 

$result=curl_exec ($ch); 
+4

¿php configurará el encabezado de la longitud del contenido para usted o debería establecerlo también? –

+3

No puedo hacer que esto funcione en absoluto. Tengo una página en la que intento publicar datos sin formato. Esa página registra todos los datos sin procesar que recibe en una tabla de base de datos. No hay nuevas filas en absoluto. ¿Sabes si algo ha cambiado aquí desde '09? – James

+1

Esto funciona para mí, sin especificar ningún encabezado HTTP. – xryl669