cómo publicar datos usando Curl en php?

He creado servicios web en restler framework y estoy tratando de insertar datos usando curl en php desde la librería cliente que he creado.

api.php

 /** * Manually routed method. we can specify as many routes as we want * * @url POST addcomment/{token}/{email}/{comment}/{story_id} */ function addComment($token,$email,$comment,$story_id){ return $this->dp->insertComment($token,$email,$comment,$story_id); } 

para fines de prueba del cliente: testing.php

 $data_string = "token=900150983cd24fb0d6963f7d28e17f72&[email protected]&comment=commentusingcurl&story_id=2"; $ch = curl_init('http://localhost/Restler/public/examples/news/addcomment'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //curl_setopt($ch, CURLOPT_HTTPHEADER,array("Content-Type : text","Content-lenght:".strlen($data_string))); $result = curl_exec($ch); 

pero está arrojando 404 . Por favor ayuda.

No deberías mapear todos los parámetros a URL,

 /** * Manually routed method. we can specify as many routes as we want * * @url POST addcomment/{token}/{email}/{comment}/{story_id} */ function addComment($token,$email,$comment,$story_id){ return $this->dp->insertComment($token,$email,$comment,$story_id); } 

Al hacerlo, la API solo puede aceptar URL como

 http://localhost/Restler/public/examples/news/addcomment/900150983cd24fb0d6963f7d28e17f72/[email protected]/commentusingcurl/2 

Cambia tu método API a

 /** * Manually routed method. we can specify as many routes as we want * * @url POST addcomment */ function addComment($token,$email,$comment,$story_id){ return $this->dp->insertComment($token,$email,$comment,$story_id); } 

Entonces su ejemplo cURL debería funcionar bien

 $data_string = "token=900150983cd24fb0d6963f7d28e17f72&[email protected]&comment=commentusingcurl&story_id=2"; $ch = curl_init('http://localhost/Restler/public/examples/news/addcomment'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //curl_setopt($ch, CURLOPT_HTTPHEADER,array("Content-Type : text","Content-lenght:".strlen($data_string))); $result = curl_exec($ch); 
 //curl_setopt($ch, CURLOPT_HTTPHEADER,array("Content-Type : text","Content-lenght:".strlen($data_string))); 

NOTA: Descomente la línea puede ser.

Vea el ejemplo de datos de publicación usando curl.

 function post($requestJson) { $postUrl = $this->endpoint."?access_token=".$this->token; //Get length of post $postlength = strlen($requestJson); //open connection $ch = curl_init(); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL,$postUrl); curl_setopt($ch,CURLOPT_POST,$postlength); curl_setopt($ch,CURLOPT_POSTFIELDS,$requestJson); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); //close connection curl_close($ch); return $response; } 

Consulte algunos enlaces para obtener más información,

Ejecutar un HTTP POST usando PHP CURL

Enviar una publicación de formulario con PHP y CURL

Publicar en una URL usando cURL y PHP

Configurar una conexión cURL simple a datos POST usando PHP

Editar:

Restler siempre devuelve el error 404 no encontrado

puede ayudarte