【问题标题】:During Curl post how to percent encoading post parameter在卷曲帖子期间如何百分比编码帖子参数
【发布时间】:2013-05-08 06:44:19
【问题描述】:

我想在 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);

【问题讨论】:

  • 你试过urlencode()吗?
  • 是的,我尝试使用 rawurlencode 。我需要 % 编码格式
  • 尝试将这个$params[] = $key . '=' . rawurlencode($value);更改为$params[] = $key . '=' .$value;并将return implode('&', $params);替换为$data = urlencode(implode('&', $params));
  • 我试过这个,但它不起作用。我只需要对值和键进行编码。

标签: php post curl


【解决方案1】:

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 类型的POST。

【讨论】:

  • 感谢您的回答。我希望它采用 %20 编码格式。有什么办法
猜你喜欢
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-14
  • 2010-09-22
  • 2019-08-11
  • 1970-01-01
相关资源
最近更新 更多