使用 cURL 传递 $_POST 值

2022-08-30 07:41:52

如何使用 ?$_POSTcURL


答案 1

应该工作正常。

$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_POSTCURLOPT_POSTFIELDSPOST<form>


重要的是要注意,以两种格式$data,这决定了如何对帖子数据进行编码。curl_setopt($handle, CURLOPT_POSTFIELDS, $data);

  1. $data作为:数据将被发送,因为服务器并不总是接受。array()multipart/form-data

    $data = array('name' => 'Ross', 'php_master' => true);
    curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
    
  2. $data作为 url 编码字符串:数据将作为 发送,这是提交的 html 表单数据的默认编码。application/x-www-form-urlencoded

    $data = array('name' => 'Ross', 'php_master' => true);
    curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($data));
    

我希望这将有助于其他人节省时间。

看:


答案 2

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_RETURNTRANSFERCURLOPT_HEADER


推荐