2013-05-08 21 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