私は基本的にPHPでHTMLフォームを処理し、それをストレージと処理のために他の場所に送信しています。しかし、curlを介して配列リストを送信することに問題があります。そのような方法で実行する必要があります。受信サーバーに到達すると、入力フォームから直接来たかのようになります。
配列をシリアル化しても関数を使用してもエラーは発生しませんが、サーバーで配列を読み取れなくなるため、HTMLフォームから送信されたかのように投稿形式を維持する必要があります。
私はコハナを使用していますが、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で配列入力を含めるには、各サブ配列項目を個別に指定します。
の代わりに...
$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 => values次に、適切な解釈のためにContent-Typeヘッダーをmultipart/form-dataに設定する必要があります。つまり、paramsの配列の形式が正しくありません。最終的な配列値の後に余分なコンマがあります。何が悪いのか。