PHP: call to a REST api


PHP: call to a REST api

我正在尝试调用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"。NAMEPASSWORD应该是明显的。

<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编程指南中有文档。