Я в основном обрабатываю HTML-форму с помощью PHP, а затем отправляю ее в другом месте для хранения и обработки. Однако у меня возникают проблемы с отправкой списков массивов через завиток. Мне нужно сделать это таким образом, что когда он попадает на принимающий сервер, он выглядит так, как если бы он пришел прямо из входной формы.
Я не получаю никаких ошибок при использовании функции, если я сериализую массивы, однако это делает их нечитаемыми сервером, поэтому им необходимо сохранить формат сообщения, как если бы они поступали из HTML-формы.
Я использую Kohana, но принципы Curl все те же, вот мой код:
$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);
Приветствия.
CURLOPT_POSTFIELDS => http_build_query($params),
Я просто хотел поделиться альтернативой http_build_query ()
Вы можете включать массивные входы с помощью CURLOPT_POSTFIELDS, предоставляя каждый элемент subarray отдельно.
Вместо…
$videoLinks = array(); $videoLinks[0] = 'video1.wmv'; $videoLinks[1] = 'video2.wmv'; $params = array( ... 'videoLinks' => $videoLinks; ... );
… сделай это …
$params = array( ... 'videoLinks[0]' => 'video1.wmv'; 'videoLinks[1]' => 'video2.wmv'; ... );
Я новичок в cURL и его PHP-версии, но насколько я знаю, вы можете делать массивы в своем варианте просто прекрасно, просто не забывайте, что если вы отправляете массив значений field =>, тогда вам нужно установить заголовок Content-Type для multipart / form-data для правильной интерпретации. При этом ваш массив для параметров форматируется неправильно. У вас есть дополнительная запятая после окончательного значения массива. Возможно, это то, что делает его борцом.