我有一个Web服务,可以正常使用get请求,但尝试使用post似乎不起作用。我的路线中有这个:
Router::connect("/products/service_add", array("controller"=>"products", "action" => "service_add", 'seller'=>true, "[method]" => "POST"));
卖家就像一个管理员。我也有ParseExtensions('xml')。我的行动是:
function seller_service_add() {
$this->log("hit", 'debug');
$hi = array("message"=>"hey");
$this->set(compact('hi'));
}
,视图是:
<product>
<?php echo $xml->serialize($hi); ?>
</product>
当我尝试向API发送帖子时,我只是通过计时器信息获得调试跟踪。在我正在执行post请求的同一个脚本中,我正在执行get,当我运行脚本时,我可以看到API为get而不是post请求传递的数据。
我用来发送帖子的代码是:
$ch = curl_init();
$data = array('Your' => 'Data');
curl_setopt($ch, CURLOPT_URL, "http://localhost/<project>/products/service_add.xml");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$result = curl_exec($ch);
curl_close($ch);
print_r($result);`
关于为什么这不起作用的任何想法?任何帮助将不胜感激。
对不起,如果这有点冗长!
更新:当操作被点击时,我添加了一些行来向cakephp调试日志吐出东西。我在beforeFilter上有一个条目,这个条目被点击了,我可以在日志中看到它。 service_add操作中的条目不在日志中,所以我猜这个动作没有被击中?
答案 0 :(得分:0)
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
这行不应该
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);