example ejemplos curl_init php curl put

ejemplos - php curl header



Usando el método PUT con PHP cUrl Library (3)

En lugar de crear un archivo temporal en el disco, puede usar php://temp .

$body = ''the RAW data string I want to send''; /** use a max of 256KB of RAM before going to disk */ $fp = fopen(''php://temp/maxmemory:256000'', ''w''); if (!$fp) { die(''could not open temp memory data''); } fwrite($fp, $body); fseek($fp, 0); curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); curl_setopt($ch, CURLOPT_INFILE, $fp); // file pointer curl_setopt($ch, CURLOPT_INFILESIZE, strlen($body));

La ventaja es que no hay disco IO, por lo que debería ser más rápido y con menos carga en su servidor.

Puedo ejecutar el siguiente comando curl (en la línea de comando) con éxito:

curl -XPOST --basic -u user:password -H accept:application/json -H Content-type:application/json --data-binary ''{ "@queryid" : 1234 }'' http://localhost/rest/run?10

Esto es lo que estoy haciendo hasta ahora, sin embargo, no parece estar funcionando con el servicio REST que estoy usando:

$headers = array( ''Accept: application/json'', ''Content-Type: application/json'', ); $url = ''http://localhost/rest/run?10''; $query = ''{ "@queryid" : 1234 }''; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, "user:password"); curl_setopt($ch, CURLOPT_PUT, 1); curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $query); curl_setopt($ch, CURLOPT_POSTFIELDSIZE, strlen($query)); $output = curl_exec($ch); echo $output;

¿Cuál es la forma correcta de tratar de convertir --data-binary usando un método PUT?


Hola, todo lo tengo funcionando usando esta configuración:

// Start curl $ch = curl_init(); // URL for curl $url = "http://localhost/"; // Clean up string $putString = stripslashes($query); // Put string into a temporary file $putData = tmpfile(); // Write the string to the temporary file fwrite($putData, $putString); // Move back to the beginning of the file fseek($putData, 0); // Headers curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // Binary transfer i.e. --data-BINARY curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $url); // Using a PUT method i.e. -XPUT curl_setopt($ch, CURLOPT_PUT, true); // Instead of POST fields use these settings curl_setopt($ch, CURLOPT_INFILE, $putData); curl_setopt($ch, CURLOPT_INFILESIZE, strlen($putString)); $output = curl_exec($ch); echo $output; // Close the file fclose($putData); // Stop curl curl_close($ch);

:)


Todo lo que necesita establecerse es la solicitud personalizada para reutilizar el método de publicación.

CURLOPT_URL=>$url, CURLOPT_CUSTOMREQUEST=>''PUT'', CURLOPT_POSTFIELDS=>$params,