php - curl_setopt - ¿Cómo incluir datos de matriz en CURLOPT_POSTFIELDS?
curlopt_httpheader json (3)
Solo quería compartir una alternativa a http_build_query ()
Puede incluir entradas de matriz con CURLOPT_POSTFIELDS proporcionando cada elemento de subarreglo por separado.
En lugar de...
$videoLinks = array();
$videoLinks[0] = ''video1.wmv'';
$videoLinks[1] = ''video2.wmv'';
$params = array(
...
''videoLinks'' => $videoLinks;
...
);
... hacer esto ...
$params = array(
...
''videoLinks[0]'' => ''video1.wmv'';
''videoLinks[1]'' => ''video2.wmv'';
...
);
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo enviar array con CURL? ¿Debo ''urlencode''? 5 respuestas
Básicamente, estoy procesando un formulario HTML con PHP y luego lo envío a otro lugar para su almacenamiento y procesamiento. Sin embargo, estoy teniendo problemas para enviar listas de matrices a través de curl. Necesito hacerlo de tal manera que cuando llegue al servidor receptor sea como si hubiera salido directamente del formulario de entrada.
No recibo ningún error al usar la función si serializo los arreglos, sin embargo, esto los hace ilegibles para el servidor, por lo que deben mantener el formato de publicación como si vinieran de un formulario HTML.
Estoy usando Kohana pero los principios de Curl siguen siendo los mismos, aquí está mi código:
$path = "/some/process/path";
$store = "http://www.website.com";
$url = $store . $path;
$screenshots = array();
$screenshots[0] = ''image1.jpg'';
$screenshots[1] = ''image2.jpg'';
$screenshots[2] = ''image3.jpg'';
$videoLinks = array();
$videoLinks[0] = ''video1.wmv'';
$videoLinks[1] = ''video2.wmv'';
$params = array(
''id'' => ''12'',
''field1'' => ''field1text'',
''field2'' => ''field2text'',
''field3'' => ''field3text'',
''screenshots'' => $screenshots,
''videoLinks'' => $videoLinks,
);
$options = array(
CURLOPT_HTTPHEADER => array("Accept: application/json"),
CURLOPT_TIMEOUT => 30,
CURLOPT_POST => TRUE,
CURLOPT_POSTFIELDS => $params,
);
$data = Remote::get($url, $options);
$json = json_decode($data);
Aclamaciones.
Soy nuevo en cURL y en su versión de PHP, pero por lo que sé, puede hacer arreglos en su opción, pero no olvide que si está enviando una matriz de valores de campo =>, entonces debe configurar el encabezado Content-Type para multipart / form-data para una interpretación correcta. Dicho esto, su matriz para parámetros está mal formateada. Tienes esa coma adicional después del valor final de tu matriz. Eso podría ser lo que está haciendo de bork.
CURLOPT_POSTFIELDS => http_build_query($params),