Cakephp向webservice发布请求

时间:2011-04-06 10:07:21

标签: web-services cakephp

我有一个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操作中的条目不在日志中,所以我猜这个动作没有被击中?

1 个答案:

答案 0 :(得分:0)

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

这行不应该

  curl_setopt($ch, CURLOPT_POSTFIELDS, $data);