Pergunta

Eu preciso enviar exatamente isso:

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"
 }
}

eu nunca fiz algo assim e eu fiz um monte de pesquisa, mas eu não conseguia descobrir como enviar os parâmetros para essa URL

espero que vocês possam me ajudar com um exemplo, por favor, abraço!

Foi útil?

Solução

Depois de muita pesquisa, eu descobrir como fazê-lo...

1.- Utilização

App::uses('HttpSocket', 'Network/Http'); // you should put this on your controller

2.- este, em sua função

$HttpSocket = new HttpSocket(); 

3.- Aqui vem os dados que você deseja enviar via correio (neste exemplo vou utilizar as variáveis que usei..você pode substituí-los, adicionar ou excluir algum.ele depende das informações que você deseja enviar)

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

3.- Definir os Cabeçalhos

$request = array(
        'header' => array('Content-Type' => 'application/json',
        ),
    );

4.-json_encode ele

 $data = json_encode($data);

5.- Onde você está enviando o Post?, que dados?, tipo de pedido?, fazê-lo desta maneira

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

*.- Você pode ver a resposta uncommenting este trecho

//pr($response->body());

*.- Finalmente, se você deseja redirecionar a algum lugar depois de tudo o que é feito..fazê-lo desta forma...

$this->redirect(array('action' => 'index'));

Você deve ter algo parecido com isso.

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'));     

}

Esta é a forma de chamar esta função a partir de outra função (apenas no caso)

$this->actiontooutbound($idUser, $course, $price); 

se você tiver alguma dúvida, deixe-me agora, eu vou ser feliz para ajudar você ;)

Outras dicas

Se você quiser fazer isso em PHP, eu gostaria de usar o curl.O seguinte é o teste, então não há garantias de que ele está correto:

$json = array(
    'api_key' => 'My_API_KEY',
    'user_id' => 'MY_UNIQUE_USER_ID',
    'traits' => array(
          'email' =< 'dhruv@outbound.io',
          'name' => 'Dhrub Mehta',
          'phone' => '650xxxyyyyy'
     )
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADERS, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_URL, 'http://api.outbound.io/api/v1/identify');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($json));
curl_setopt($ch, CURLOPT_POST, 1);

$results = curl_exec($ch);
if (curl_errno($ch)) {
    debug(curl_error($ch));
} else {
    curl_close($ch);
}

return $results;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top