首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >CURLOPT_POSTFIELDS的卷曲POST格式

CURLOPT_POSTFIELDS的卷曲POST格式
EN

Stack Overflow用户
提问于 2011-03-08 04:20:57
回答 7查看 293.9K关注 0票数 110

当我通过POST使用curl并设置CURLOPT_POSTFIELD时,我是否必须使用urlencode或任何特殊格式?

例如:如果我想发布两个字段,第一个和最后一个:

代码语言:javascript
复制
first=John&last=Smith

应该与curl一起使用的确切代码/格式是什么?

代码语言:javascript
复制
$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);
EN

回答 7

Stack Overflow用户

发布于 2011-03-08 04:35:24

如果要发送字符串,则使用urlencode()。否则,如果是数组,则它应该是key=>value配对的,并且Content-type标头将自动设置为multipart/form-data

此外,您不必创建额外的函数来为数组构建查询,您已经拥有了:

代码语言:javascript
复制
$query = http_build_query($data, '', '&');
票数 102
EN

Stack Overflow用户

发布于 2011-03-08 04:55:08

根本不要传递字符串!

你可以传递一个数组,让php/curl来做编码之类的脏活。

票数 42
EN

Stack Overflow用户

发布于 2016-03-10 18:50:14

对于CURLOPT_POSTFIELDS,参数可以作为para1=val1&para2=val2&..这样的key编码字符串传递,也可以作为字段名作为键、字段数据作为值的数组传递

尝试以下格式:

代码语言:javascript
复制
$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);
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5224790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档