当我通过POST
使用curl
并设置CURLOPT_POSTFIELD
时,我是否必须使用urlencode
或任何特殊格式?
例如:如果我想发布两个字段,第一个和最后一个:
first=John&last=Smith
应该与curl一起使用的确切代码/格式是什么?
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$reply=curl_exec($ch);
curl_close($ch);
发布于 2011-03-08 04:35:24
如果要发送字符串,则使用urlencode()。否则,如果是数组,则它应该是key=>value配对的,并且Content-type
标头将自动设置为multipart/form-data
。
此外,您不必创建额外的函数来为数组构建查询,您已经拥有了:
$query = http_build_query($data, '', '&');
发布于 2011-03-08 04:55:08
根本不要传递字符串!
你可以传递一个数组,让php/curl来做编码之类的脏活。
发布于 2016-03-10 18:50:14
对于CURLOPT_POSTFIELDS
,参数可以作为para1=val1¶2=val2&..
这样的key编码字符串传递,也可以作为字段名作为键、字段数据作为值的数组传递
尝试以下格式:
$data = json_encode(array(
"first" => "John",
"last" => "Smith"
));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
curl_close($ch);
https://stackoverflow.com/questions/5224790
复制相似问题