1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
--TEST--
CURLOPT_POSTFIELDS with multi-value fields
--EXTENSIONS--
curl
sockets
--FILE--
<?php
$socket = stream_socket_server("tcp://0.0.0.0:29999", $errno, $errstr);
if (!$socket) {
echo "$errstr ($errno)<br />\n";
return;
}
$url = "http://127.0.0.1:29999/get.inc?test=raw";
$fields = [
'single' => 'SingleValue',
'multi' => [
'Multi1',
'Multi2',
]
];
$options = [
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_URL => $url,
CURLOPT_FRESH_CONNECT => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FORBID_REUSE => 1,
CURLOPT_TIMEOUT => 1,
CURLOPT_POSTFIELDS => $fields,
CURLOPT_HTTPHEADER => [ 'Expect:' ],
];
$ch = curl_init();
curl_setopt_array($ch, $options);
$curl_content = curl_exec($ch);
curl_close($ch);
$conn = stream_socket_accept($socket);
echo stream_get_contents($conn);
?>
--EXPECTF--
POST /get.inc?test=raw HTTP/1.1
Host: %s
Accept: */*
Content-Length: %d
Content-Type: multipart/form-data; boundary=------------------------%s
--------------------------%s
Content-Disposition: form-data; name="single"
SingleValue
--------------------------%s
Content-Disposition: form-data; name="multi"
Multi1
--------------------------%s
Content-Disposition: form-data; name="multi"
Multi2
--------------------------%s--
|