为什么PHP cURL POST请求显示为GET?

时间:2015-02-02 11:00:32

标签: php http post curl firebug

我尝试向api发送POST请求以使用PHP cURL创建用户。这是代码示例

<?php
$email="jas@example.com";
$name = "jas";
$data = array(
"user" => array("email"=>$email,"name"=>$name)
);
//encoding to json format
$jsondata= json_encode($data);

$credentials = "username:pass";
$header[] = "Content-Type: application/json";
$header[] =  "Authorization: Basic " . base64_encode($credentials); 
$connection = curl_init();
curl_setopt($connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($connection, CURLOPT_HTTPHEADER, $header);
curl_setopt($connection, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($connection, CURLOPT_HEADER, false);

//POSTS
curl_setopt($connection, CURLOPT_POST, 1);
curl_setopt($connection, CURLOPT_POSTFIELDS, $jsondata);

curl_setopt($connection, CURLOPT_VERBOSE, 1);


curl_setopt($connection, CURLOPT_URL, "http://domain.freshdesk.com/contacts.json");
$response = curl_exec($connection); 
?>

即使我已经设置

,看起来它实际上并没有发送帖子
curl_setopt($connection, CURLOPT_POST, 1);
curl_setopt($connection, CURLOPT_POSTFIELDS, $jsondata);

我在firebug net标签中看到了一个GET请求。 GET in firebug

它真的是一个帖子请求吗?因为缩进操作(创建新用户)没有发生,而是列出所有用户,因为它是一个GET请求。

2 个答案:

答案 0 :(得分:1)

GET请求只是您对PHP脚本的请求,然后执行POST请求。

您无法在开发者控制台中看到使用cURL完成的请求,因为它们是从服务器发送的,而不是客户端。

答案 1 :(得分:1)

错误在于使用firebug调试此请求的逻辑。

您向服务器/页面发送GET请求,create-user.php。反过来,此脚本/服务器向API站点发送POST请求。您的Web客户端(浏览器)以及firebug不会“知道”第二部分,这会发生在您的服务器上。

要查看实际的POST请求,您应该使用不同的工具。例如,将POST请求指向您自己的计算机,然后在服务器日志中确认存在入站POST请求。