我想以百分比编码格式发布我的数据在Curl Php中。 我发布的数据名=“测试测试”; 我希望将其编码为test%20test%20test,但它将数据发布为test + test + test。
在传入curl之前,我还将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 :(得分: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-urlencoded
和multipart/form-data
MIME类型的POST。