2017-10-13 7 views
0

Je suis nouveau au développement PHP. Je travaille sur CURL pour appeler mon WEB API. En tant que débutant, j'ai trouvé très difficile de comprendre les choses.Comment passer les paramètres GET en curl PHP

Comment mon API fonctionne

API_URL est http://localhost:14909/api/meters/GetByMsn/002999000077/2017-10-11T12:16:20

Il faut meter serial number et un data time et donne la réponse authorizing l'URL. La réponse que je reçois est

{ 
"data": { 
    "Response": "No" 
    } 
} 

Ce que je veux faire

Maintenant En PHP J'utilise CURL pour faire la demande. La demande est simple car il faut le meter serial number actuellement sélectionné et un current date time aussi il faut prendre la clé d'autorisation.

Ce que je l'ai fait jusqu'à présent

est le code ci-dessous jusqu'à présent je l'ai fait

if(isset($_REQUEST['selected_meters'])) 
    { 
     $m = MetersInventoryStore::findOne($_REQUEST['selected_meters']); 

     $msn = $m->meter_serial; // current selected meter serial number is saved 

     $date_time = str_replace(' ','T',date('Y-m-d H:i:s')); // current date time 

     $api_url = 'http://116.xx.xx.xx:xxxx/api/meters/GetByMsn/'; // my base URL 

     $curl = curl_init($api_url); 

     curl_setopt($curl,CURLOPT_RETURNTRANSFER, CURLOPT_HTTPHEADER, array('Authorization: MY_KEY')); // setting the authorization key in header. 


     exit(); 

    } 

Maintenant, je veux envoyer les paramètres meter serial number et date time. Pour cela, j'ai cherché de nombreux articles, mais tous j'ai trouvé un moyen de passer des paramètres comme query et related link.

Une méthode que je pense à la transmission de paramètres est directement à l'URL comme:

$api_url = 'http://116.xx.xx.xx:xxxx/api/meters/GetByMsn/[$msn]/[$date_time]'; 

OU

$api_url = 'http://116.xx.xx.xx:xxxx/api/meters/GetByMsn/' + $msn + '/'+$date_time; 

Mais je ne savent pas cela fonctionne ou non

Tous l'aide serait très appréciée.

+0

Essayez et vous apprendre. – urfusion

+0

http: //116.xx.xx.xx: xxxx/api/mètres/GetByMsn /? Msn = $ valeur_msn Utilisez le "?", Recherchez le reste –

+0

@DessaugesAntoine ne peut pas utiliser '?' Comme paramètres sont passés comme un chemin – faisal1208

Répondre

0

Essayez ceci et voir si cela fonctionne:

$api_url = 'http://116.xx.xx.xx:xxxx/api/meters/GetByMsn/${msn}/${date_time}'; 

ou

$api_url = 'http://116.xx.xx.xx:xxxx/api/meters/GetByMsn/{$msn}/{$date_time}'; 
0

Ainsi, après beaucoup de recherches je parviens à obtenir une réponse. Concaténer les deux paramètres dans le URL et changer le curl_setopt.

Changements:

De

$api_url = 'http://116.xx.xx.xx:xxxx/api/meters/GetByMsn/'; // my base URL 

Pour

$api_url = 'http://116.xx.xx.xx:xxxx/api/meters/GetByMsn/'.$msn . '/' . $date_time; // my base URL 

Et

curl_setopt($curl,CURLOPT_RETURNTRANSFER, CURLOPT_HTTPHEADER, array('Authorization: MY_KEY')); // setting the authorization key in header. 

Pour

curl_setopt($curl CURLOPT_HTTPHEADER, array('Authorization: MY_KEY')); // Removed the CURLOPT_RETURNTRANSFER 

Et puis

$curl_response = curl_exec($curl); 
     print_r($curl_response); 
     /* print_r($msn); 
     echo $date_time;*/ 
     //echo date('Y-m-d H:i:s'); 
     exit();