使用cURL进行POST网址编码

时间:2011-09-01 23:13:34

标签: post curl urlencode

当我必须使用CURL发送POST请求时,如果它们包含带空格的字符串,则在POST字段中我是否必须对字符串进行url_encode,否则函数会为我执行此操作?

什么是正确的?

CURLOPT_POSTFIELDS  => 'field=this%20is%20good'

或者

CURLOPT_POSTFIELDS  => 'field=this is good'

我问,因为我不希望它对字符串进行两次编码,从而发送不正确的数据。

谢谢

1 个答案:

答案 0 :(得分:1)

您没有指定,但我想您正在使用PHP,对吧?

必须根据RFC 1738对其进行urlencoded。 您可以使用http_build_query()函数。我使用,例如:

$array = array('field' => 'this is good');
http_build_query($array, '', '&');

您也可以简单地传递$ array作为选项(如CURLOPT_POSTFIELDS => $array),但这将创建一个multipart / form-data请求,而不是“普通”应用程序/ x-www-form-urlencoded。

PS:你的没有一个是正确的,实际上:)你应该根据RFC 1738用+编码空格,而不是用%20编码。