1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
/**
* url requête : https://api.solvice.io/v1/solve
**/
/** Tableau pour les véhicules
* fleet [
* {
* name : String Nom unique du véhicule (Obligatoire)
* startLocation : String Nom de la localisation de départ (Obligatoire)
* endLocation : String Nom de la localisation de fin (Facultative)
* }
* ]
**/
$fleet = array(
array("name" => "truck1", "startlocation" => "startend", "endLocation" => "startend"),
);
/** Tableau pour les localisations :
* locations [
* {
* name : Nom unique de la localisation
* latitude : Latitude
* longitude : Longitude
* }
* ]
**/
$locs = array(
array( "name" => "startend", "latitude" => "50.4723", "longitude" => "4.83258" ), // Départ et arrivée
array( "name" => "loc1", "latitude" => "50.3766", "longitude" => "4.89706" ), // Tâche 1
array( "name" => "loc2", "latitude" => "50.3755", "longitude" => "4.86095" ), // Tâche 2
array( "name" => "loc3", "latitude" => "50.3719", "longitude" => "4.87840" ), // Tâche 3
array( "name" => "loc4", "latitude" => "50.3875", "longitude" => "4.90065" ), // Tâche 4
array( "name" => "loc5", "latitude" => "50.3783", "longitude" => "4.87253" ), // Tâche 5
array( "name" => "loc6", "latitude" => "50.3811", "longitude" => "4.90994" ), // Tâche 6
array( "name" => "loc7", "latitude" => "50.3779", "longitude" => "4.86896" ), // Tâche 7
array( "name" => "loc8", "latitude" => "50.3769", "longitude" => "4.90505" ), // Tâche 8
);
/** Le tableau des ordres
* orders [
* {
* name : The unique name of the vehicle yes
* location : The name of the location where the vehicle starts yes
* activity : Type of activity
* duration : Duration of the service (in minutes)
* type : Starting time of the shift in minutes
* load : Load type 1
* load2 : Load type 2
* windows : See Time Window structure
* }
* ]
**/
$orders = array(
array("name" => "order0", "location" => "startend", "activity" => "PICKUP", "duration" => "20", "load" => 1),
array("name" => "order1", "location" => "loc1", "activity" => "PICKUP", "duration" => "20", "load" => 1),
array("name" => "order2", "location" => "loc2", "activity" => "PICKUP", "duration" => "20", "load" => 1),
array("name" => "order3", "location" => "loc3", "activity" => "PICKUP", "duration" => "20", "load" => 1),
array("name" => "order4", "location" => "loc4", "activity" => "PICKUP", "duration" => "20", "load" => 1),
array("name" => "order5", "location" => "loc5", "activity" => "PICKUP", "duration" => "20", "load" => 1),
array("name" => "order6", "location" => "loc6", "activity" => "PICKUP", "duration" => "20", "load" => 1),
array("name" => "order7", "location" => "loc7", "activity" => "PICKUP", "duration" => "20", "load" => 1),
array("name" => "order8", "location" => "loc8", "activity" => "PICKUP", "duration" => "20", "load" => 1),
);
/** Le tableau contenant les options (ce référer à la doc) **/
$options = array(
"traffic" => "1.2",
"overconstrained" => false,
"vehicle_setup_cost" => 100,
"minimize_driver_wait_time" => false,
"minimize_vehicle_use" => false,
"allow_overtime" => false
);
/** Création d'un tableau qui regroupera nos différent paramètre à envoyer **/
$posts = array();
$posts["solver"] = "VRP"; // Signale qu'on cherche une solution de route
$posts["locations"] = $locs; // Tableau contenant les différents point géolocalisés
$posts["fleet"] = $fleet; // Tableau contenant les informations de camion
$posts["orders"] = $orders; // Celà peux paraître redondant mais ce tableau est nécessaire et fait la liaison avec 'locations'
$posts["options"] = $options; // Tableau d'options standard
/** Définit les headers à envoyer lors de la requête **/
$header = array( "Content-Type: application/json", "Authorization Basic: demo:demo" );
// Initialisation curl
$ch = curl_init("https://demo:demo@api.solvice.io/v1/solve");
// On déclare que la requête se fera en POST
curl_setopt($ch, CURLOPT_POST, true);
// On lui demande de ne pas vérifier le certificat ssl
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
// On lui demande de nous retourner le resultat au lieu de l'afficher
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// On définit nos paramètre post, ce format dépend des service, dans mon ca c'est du json d'ou le json_encode **/
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($posts));
// On définit les headers (dois toujours être un array()
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
// Permet de récupérer les information headers dans le curl_getinfo()
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
// On peux lui demander de masquer le resultat (je vois pas trop l'intérêt, c'est pourquoi la ligne est commentée
//curl_setopt($ch, CURLOPT_NOBODY, true);
// On exécute la requête (on envoi la requête)
$response = curl_exec($ch);
// Si il y'a une error ceci nous donnera le numéro d'erreur
$err = curl_errno( $ch );
// Et ceci le message d'erreur
$errmsg = curl_error( $ch );
// Je place les informations header de retour dans une variable, mais c'est pas nécessaire sauf pour debugger le chmilbik
$infos = curl_getinfo($ch);
// On ferme la connexion curl
curl_close ($ch);
// On affiche le résultat, $response devient votre retour, vous pouvez donc faire tout les traitement dessus
echo "<div>[ Réponse ]</div>";
echo "<pre>";
print_r(json_decode($response));
echo "</pre>"; |
Partager