2013-05-08 51 views
2

我想以百分比编码格式发布我的数据在Curl Php。 我发布数据名称=“test test test”; 我希望将其编码为test%20test%20test,但它将数据发布为test + test + test。在卷曲过程中如何百分比encoading发布参数

在通过卷曲之前,我还使rawurlencode方法编码百分比,但curl将其转换为正常编码。

请让我知道我错过了什么?

//creating my post parameter 


$params = array(); 



foreach ($array as $key => $value) { 
$params[] = $key . '=' . rawurlencode($value); 

    } 

return implode('&', $params); 

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_ENCODING, ""); 
$result = curl_exec($ch); 
+0

你试过'urlencode()'吗? – HamZa 2013-05-08 06:52:53

+0

是的,我用rawurlencode尝试。我需要它以%encoading格式 – 2013-05-08 06:54:46

+0

试着改变这个'$ params [] = $ key。 '='。 rawurlencode($ value);'到'$ params [] = $ key。 '='。$ value;'并替换'返回implode('&',$ params);'用'$ data = urlencode(implode('&',$ params));' – HamZa 2013-05-08 07:00:49

回答

2

POST数据应该被编码为application/x-www-form-urlencoded。在此编码中,空格表示为+,而不是%20,并且您得到的结果(test+test+test)是正确的。请参阅http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1

这就是为什么curl%20翻译为+。 PHP cURL库仅支持application/x-www-form-urlencodedmultipart/form-data MIME类型的POSTing。

+0

感谢您的回答。我想以%20编码格式。有什么办法吗? – 2013-05-08 08:19:50