通过cURL传递$ _POST值

时间:2020-03-05 18:43:23  来源:igfitidea点击:

如何使用cURL将$ _POST值传递给页面?

解决方案

回答

应该工作正常。

$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)

这里有两个选项,CURLOPT_POST打开HTTP POST,和CURLOPT_POSTFIELDS包含我们要提交的一系列帖子数据。这可以用来将数据提交到POST<form>`s。

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

  • $ data作为array():数据将以multipart / form-data的形式发送,但服务器并不总是接受。
$data = array('name' => 'Ross', 'php_master' => true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
  • " $ data"作为url编码的字符串:数据将以" application / x-www-form-urlencoded"的形式发送,这是提交的html表单数据的默认编码。
$data = array('name' => 'Ross', 'php_master' => true);
curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($data));

我希望这可以帮助其他人节省时间。

看:

  • curl_init
  • curl_setopt

回答

请查看此页面,其中包含有关操作方法的示例。

回答

Ross具有将常用参数/值格式发布到url的正确想法。

最近,我遇到了一种情况,我需要以内容类型" text / xml"的形式发布一些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