使用 cURL 传递 $_POST 值
如何使用 ?$_POST
cURL
应该工作正常。
$data = array('name' => 'Ross', 'php_master' => true);
// You can POST a file by prefixing with an @ (for <input type="file"> fields)
$data['file'] = '@/home/user/world.jpg';
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
curl_exec($handle);
curl_close($handle)
我们这里有两个选项,它打开HTTP POST,它包含要提交的帖子数据的数组。这可用于向 s 提交数据。CURLOPT_POST
CURLOPT_POSTFIELDS
POST
<form>
重要的是要注意,以两种格式$data,这决定了如何对帖子数据进行编码。curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
$data
作为:数据将被发送,因为服务器并不总是接受。array()
multipart/form-data
$data = array('name' => 'Ross', 'php_master' => true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
$data
作为 url 编码字符串:数据将作为 发送,这是提交的 html 表单数据的默认编码。application/x-www-form-urlencoded
$data = array('name' => 'Ross', 'php_master' => true);
curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($data));
我希望这将有助于其他人节省时间。
看:
Ross有将通常的参数/值格式POS到URL的正确想法。
我最近遇到了一种情况,我需要将一些XML发布为内容类型“text/xml”,而无需任何参数对,因此以下是您执行此操作的方法:
$xml = '<?xml version="1.0"?><stuff><child>foo</child><child>bar</child></stuff>';
$httpRequest = curl_init();
curl_setopt($httpRequest, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($httpRequest, CURLOPT_HTTPHEADER, array("Content-Type: text/xml"));
curl_setopt($httpRequest, CURLOPT_POST, 1);
curl_setopt($httpRequest, CURLOPT_HEADER, 1);
curl_setopt($httpRequest, CURLOPT_URL, $url);
curl_setopt($httpRequest, CURLOPT_POSTFIELDS, $xml);
$returnHeader = curl_exec($httpRequest);
curl_close($httpRequest);
在我的情况下,我需要从HTTP响应标头中解析一些值,因此您可能不一定需要设置或.CURLOPT_RETURNTRANSFER
CURLOPT_HEADER