当我必须使用CURL发送POST请求时,如果它们包含带空格的字符串,则在POST字段中我是否必须对字符串进行url_encode,否则函数会为我执行此操作?
什么是正确的?
CURLOPT_POSTFIELDS => 'field=this%20is%20good'
或者
CURLOPT_POSTFIELDS => 'field=this is good'
我问,因为我不希望它对字符串进行两次编码,从而发送不正确的数据。
谢谢
答案 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编码。