J'essaie d'appeler une API vChargeBack pour obtenir des informations sur le serveur vCenter. J'ai des problèmes avec ça.PHP: appel à une API REST
Je dois passer la requête en tant que données XML dans le corps de la requête. Et aussi je dois passer la version comme paramètre d'URL. Le code que j'ai écrit est
$xmlfile=simplexml_load_file('login.xml');
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$xmlfile);//Passing XML file as POST field
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_URL,"https://xx.xx.xx.xx/vCenter-CB/api/login");//Setting URL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch , CURLOPT_SSL_VERIFYPEER , false);//Since I am requesting https
curl_setopt($ch , CURLOPT_SSL_VERIFYHOST , false);//Since I am requesting https
curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Accept: ' . $this->acceptType));
$response=curl_exec($ch);//Getting response
$responseInfo=curl_getinfo($ch);//Getting response headers
Lorsque j'exécute, j'ai une réponse de 400 demandes incorrectes. Ce que j'ai remarqué, c'est que je n'envoie pas de version en tant que paramètre d'URL. Il devrait être Nom: version valeur: 1.5.0 Je ne sais pas comment envoyer cette version en tant que paramètre d'URL. Devrais-je envoyer cela comme POSTFIELD alors comment dois-je envoyer le fichier XML en tant que corps de la demande.
S'il vous plaît aidez-moi ...
Cordialement, Srinath
Ne vous donnent-ils pas un exemple? "Paramètre URL" ressemble à ce que vous devriez faire 'https: //xx.xx.xx.xx/vCenter-CB/api/login? Version = 1.5.0' –
Ils n'ont pas donné d'exemple en PHP mais j'ai un exemple en Java, ils ont créé un objet pour la classe PostMethod et ont défini la version en utilisant 'NameValuePair [] parameters = {new NameValuePair (" version "," 1.5.0 ")}; post = nouveau PostMethod (uri); post.setQueryString (paramètres); 'J'ai essayé' https: //xx.xx.xx.xx/vCenter-CB/api/login? version = 1.5.0' aussi, il est toujours dit Bad Request. – Srinath
C'est utile. La chaîne de requête est la partie qui vient après le? dans une URL, pas le corps du POST. Vous êtes donc sur la bonne voie, mais je ne sais pas ce que vous faites d'autre, car je n'ai aucune idée de ce qu'est cette API et je ne lirai pas sa documentation. –