<?php
/**
* Call the Pardot API and get the raw XML response back
*
* @param string $url the full Pardot API URL to call, e.g. "https://pi.pardot.com/api/prospect/version/3/do/query"
* @param array $data the data to send to the API - make sure to include your api_key and user_key for authentication
* @param string $method GET", "POST", "DELETE"
* @return string the raw XML response from the Pardot API
* @throws Exception if we were unable to contact the Pardot API or something went wrong
*/
function callPardotApi($url, $data, $method = 'GET')
{
// build out the full url, with the query string attached.
$queryString = http_build_query($data, null, '&');
if (strpos($url, '?') !== false) {
$url = $url . '&' . $queryString;
} else {
$url = $url . '?' . $queryString;
}
$curl_handle = curl_init($url);
// wait 5 seconds to connect to the Pardot API, and 30
// total seconds for everything to complete
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl_handle, CURLOPT_TIMEOUT, 30);
// https only, please!
curl_setopt($curl_handle, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);
// ALWAYS verify SSL - this should NEVER be changed. 2 = strict verify
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, 2);
// return the result from the server as the return value of curl_exec instead of echoing it
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
if (strcasecmp($method, 'POST') === 0) {
curl_setopt($curl_handle, CURLOPT_POST, true);
} elseif (strcasecmp($method, 'GET') !== 0) {
// perhaps a DELETE?
curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, strtoupper($method));
}
$pardotApiResponse = curl_exec($curl_handle);
if ($pardotApiResponse === false) {
// failure - a timeout or other problem. depending on how you want to handle failures,
// you may want to modify this code. Some folks might throw an exception here. Some might
// log the error. May you want to return a value that signifies an error. The choice is yours!
// let's see what went wrong -- first look at curl
$humanReadableError = curl_error($curl_handle);
// you can also get the HTTP response code
$httpResponseCode = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE);
// make sure to close your handle before you bug out!
curl_close($curl_handle);
throw new Exception("Unable to successfully complete Pardot API call to $url -- curl error: \"".
"$humanReadableError\", HTTP response code was: $httpResponseCode");
}
// make sure to close your handle before you bug out!
curl_close($curl_handle);
return $pardotApiResponse;
}
//this will log in and print your API Key (good for 1 hour) to the console
$rz_key = callPardotApi('https://pi.pardot.com/api/login/version/3',
array(
'email' => 'myemail@email.com',
'password' => 'password',
'user_key' => '032222222222222b75a192daba28d'
)
);
$number_url = 'https://pi.pardot.com/api/prospect/version/3/do/query';
$number_url .= '?user_key=032222222222222b75a192daba28d';
$number_url .= '&api_key=';
$number_url .= $rz_key;
$number_url .= '&list_id=97676';
$number_url = preg_replace('/\s+/', '', $number_url);
echo $number_url;
Deprecated: http_build_query(): Passing null to parameter #2 ($numeric_prefix) of type string is deprecated in /in/uCfiD on line 14
Fatal error: Uncaught Error: Call to undefined function curl_init() in /in/uCfiD:21
Stack trace:
#0 /in/uCfiD(71): callPardotApi('https://pi.pard...', Array)
#1 {main}
thrown in /in/uCfiD on line 21
Process exited with code 255.
Output for 8.1.0 - 8.1.28
Deprecated: http_build_query(): Passing null to parameter #2 ($numeric_prefix) of type string is deprecated in /in/uCfiD on line 14
Fatal error: Uncaught Error: Call to undefined function curl_init() in /in/uCfiD:21
Stack trace:
#0 /in/uCfiD(73): callPardotApi('https://pi.pard...', Array)
#1 {main}
thrown in /in/uCfiD on line 21
Process exited with code 255.
Fatal error: Uncaught Error: Call to undefined function curl_init() in /in/uCfiD:21
Stack trace:
#0 /in/uCfiD(73): callPardotApi('https://pi.pard...', Array)
#1 {main}
thrown in /in/uCfiD on line 21
Process exited with code 255.
Fatal error: Call to undefined function curl_init() in /in/uCfiD on line 21
Process exited with code 255.
Output for 5.0.0 - 5.0.5, 5.1.0 - 5.1.1
Warning: http_build_query() expects at most 2 parameters, 3 given in /in/uCfiD on line 14
Fatal error: Call to undefined function curl_init() in /in/uCfiD on line 21
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_NEW in /in/uCfiD on line 59
Process exited with code 255.