Ik ben laatst begonnen met voor het eerst curl te gebruiken in PHP.
$headers = [
"Content-Type: application/json",
"Accept: application/json",
"X-API-TOKEN: ".$token,
"Connection: keep-alive",
];
$body = [
'FirstName' => $result['inputs']['fname'],
'MiddleName' => $result['inputs']['prefix'],
'LastName' => $result['inputs']['lname'],
'Email' => $result['inputs']['email'],
'PhonePrivate' => $result['inputs']['phone'],
'Gender' => $result['inputs']['sex'],
'Zipcode' => $result['inputs']['zipcode'],
'City' => $result['inputs']['place'],
'Address' => $result['inputs']['street'],
'HouseNumber' => $result['inputs']['housenumber'],
'HouseNumberExtension' => $result['inputs']['addition'],
'BirthDate' => $result['inputs']['birthdate'],
'Language' => $result['inputs']['language'],
];
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://www.sportivity.com/sportivity-api/Customers',
CURLOPT_RETURNTRANSFER => true, //Return output instead of printing it.
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($body, JSON_FORCE_OBJECT),
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSl_VERIFYHOST => false,)
);
$result['response'] = curl_exec($curl);
$result['errors'] = [];
curl_close($curl);
echo json_encode($result['response']);
Deze code word geactiveerd op het moment dat alle formulier velden correct zijn ingevuld.
Als response krijg ik de input velden terug inclusief een customer_id. wat goed is.
Ik vond dit alleen slordig en probeerde het in een class te maken:
<?php
class Api {
protected $base_url = 'https://www.sportivity.com/sportivity-api';
protected $token;
public function __construct($token){
$this->token = $token;
}
protected function getHeaders(){
return [
"Content-Type: application/json",
"Accept: application/json",
"X-API-TOKEN: ".$this->token,
"Connection: keep-alive",
];
}
public function prepareApi($url){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $this->base_url.$url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $this->getHeaders());
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
$response = curl_exec($curl);
curl_close($curl);
return json_decode($response);
}
public function sendPostRequest($url, $body)
{
return $this->postRequest($url, $body);
}
private function postRequest($url, $body){
$curl = curl_init;
curl_setopt_array($curl, $this->getCurlPostOptions($url, $body));
$response = curl_exec($curl);
curl_close($curl);
return json_encode($response);
}
private function getCurlPostOptions($url, $body){
return [
CURLOPT_URL => $this->base_url.$url,
CURLOPT_RETURNTRANSFER => true, //Return output instead of printing it.
CURLOPT_HTTPHEADER => $this->getHeaders(),
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($body, JSON_FORCE_OBJECT),
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSl_VERIFYHOST => false,
];
}
public function getLocations(){
return $this->prepareApi('/Locations');
}
public function getSubscriptions(){
return $this->prepareApi('/MembershipDefinition');
}
}
// $api = new Api();
// $test = $api->getLocations();
// var_dump($test->LocationResources);
?>
Vervolgens probeer ik de data dus zo op te halen:
$api = new Api($token);
$result['response'] = $api->sendPostRequest('/Customers', $body);
Helaas krijg ik een response: "null" terug en weet ik niet waar dat aan ligt.
[size=xsmall]Toevoeging op 19/10/2021 12:04:11:[/size]
Vervolgens doe ik eigenlijk nog
echo $result;
wat dus in jquery met een ajax request word opgehaald en JSON.parse() op het result