如何在cakephp发送json帖子

Ren*_*olo 5 api post json cakephp outbound

我需要发送这个:

POST http://api.outbound.io/api/v1/identify
Content-Type: application/json
{
 "api_key": "MY_API_KEY",
 "user_id": "MY_UNIQUE_USER_ID",
 "traits" : {
    "email" : "dhruv@outbound.io",
    "name" : "Dhruv Mehta",
    "phone" : "650xxxyyyyy"
 }
}
Run Code Online (Sandbox Code Playgroud)

我从来没有做过这样的事情,我做了很多研究,但我找不到如何将这些参数发送到该URL

我希望你们能帮助我一个例子,最好的问候!

Ren*_*olo 20

经过大量的研究,我发现了如何做到......

1.-使用

App::uses('HttpSocket', 'Network/Http'); // you should put this on your controller
Run Code Online (Sandbox Code Playgroud)

2.-这是你的功能

$HttpSocket = new HttpSocket(); 
Run Code Online (Sandbox Code Playgroud)

3.-这里是你要通过POST发送的数据(在这个例子中,我将使用我使用的变量..你可以替换它们,添加更多或删除一些......这取决于你想要发送的信息)

$data = array(
           "api_key" => "API KEY",
           "user_id" => $idUser,
           "event" => "other",
           "extra" => array(
                          "course" => $course,
                          "price"=> $price )
               );
Run Code Online (Sandbox Code Playgroud)

3.-设置标题

$request = array(
        'header' => array('Content-Type' => 'application/json',
        ),
    );
Run Code Online (Sandbox Code Playgroud)

4.-json_encode它

 $data = json_encode($data);
Run Code Online (Sandbox Code Playgroud)

5.-你在哪里发送Post To?,哪个数据?,请求的类型?,这样做

$response = $HttpSocket->post('http://api.yourweburl.com/api/', $data, $request);
Run Code Online (Sandbox Code Playgroud)

*.-您可以看到取消注释此代码段的响应

//pr($response->body());
Run Code Online (Sandbox Code Playgroud)

*.-最后,如果你想在一切都完成后重定向某个地方......这样做......

$this->redirect(array('action' => 'index'));
Run Code Online (Sandbox Code Playgroud)

你应该有这样的东西.

public function actiontooutbound($idUser, $course, $price){
 $HttpSocket = new HttpSocket();

    $data = array(
           "api_key" => "API KEY",
           "user_id" => $idUser,
           "event" => "other",
           "extra" => array(
                          "course" => $course,
                          "price"=> $price )
               );

    $request = array(
        'header' => array(
            'Content-Type' => 'application/json',
        ),
    );
    $data = json_encode($data);
    $response = $HttpSocket->post('http://api.outbound.io/api/v1/track', $data, $request);
   // pr($data);
    //pr($response->body());
   $this->redirect(array('action' => 'index'));     
Run Code Online (Sandbox Code Playgroud)

}

这是你从另一个函数调用这个函数的方法(以防万一)

$this->actiontooutbound($idUser, $course, $price); 
Run Code Online (Sandbox Code Playgroud)

如果您有任何问题,现在让我很乐意为您提供帮助;)