通过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
。