我正在尝试调用vChargeBack API以获取vCenter服务器上的信息。我对此有问题。
我必须在请求体中传递请求作为XML数据。我还需要传递版本作为URL参数。我写的代码是
$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
当我执行时,我有400个错误的请求响应。我注意到的是我没有发送版本作为URL参数。应该是名称:版本取值:1.5.0我不知道如何发送这个版本作为URL参数。我应该将其作为POSTFIELD发送,那么我应该如何将xml文件作为请求体发送。
请帮帮我…
问候,Srinath
Chargeback接口不是RESTful的。它是一个XML门户,其资源位于文档定义的给定端点。登录时,将API_NAMESPACE
填写为安装时提供的XML命名空间,将API_VERSION
填写为API版本号,将TYPE
填写为"local"或"ldap"。NAME
和PASSWORD
应该是明显的。
<Request xmlns="$API_NAMESPACE/$API_VERSION">
<Users>
<User>
<Type>$TYPE</Type>
<Name>$NAME</Name>
<Password>$PASSWORD</Password>
</User>
</Users>
</Request>
用原始POST数据集生成一个到https://hostname/vCenter-CB/api/login?version=$API_VERSION
的POST请求。请记住保留在此请求返回后发送的会话cookie,因为它代表了您向服务器发送的会话。
另外,如果使用LDAP登录,可能必须在Users
下面包含LdapUsers
子元素(作为User
元素的兄弟元素)以提供LDAP凭据。这在VMware的API编程指南中有文档。