PHP:调用restapi

PHP:调用restapi,php,rest,restful-authentication,Php,Rest,Restful Authentication,我正在尝试调用vChargeBack API以获取vCenter server上的信息。我对此有意见 我必须将请求作为XML数据传递到请求体中。我还必须将版本作为URL参数传递。我写的代码是 $xmlfile=simplexml_load_file('login.xml'); $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,$xmlfile);//Passing

我正在尝试调用vChargeBack API以获取vCenter server上的信息。我对此有意见

我必须将请求作为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

计费接口不是RESTful。它是一个XML门户,在文档定义的给定端点上具有资源。要登录,请填写
API\u名称空间
作为为您的安装提供的XML名称空间,填写
API\u版本
作为API版本号,
键入
(可以是“本地”或“ldap”)<代码>名称和密码应该是明显的

<Request xmlns="$API_NAMESPACE/$API_VERSION">
    <Users>
        <User>
            <Type>$TYPE</Type>
            <Name>$NAME</Name>
            <Password>$PASSWORD</Password>
        </User>
    </Users>
</Request>

$TYPE
$NAME
$PASSWORD
生成对
https://hostname/vCenter-CB/api/login?version=$API_VERSION
,将原始POST数据设置为上述XML。请记住保留此请求返回后发送的会话cookie,因为它表示您与服务器的会话


此外,如果您使用LDAP登录,则可能必须在
用户
下包含
LdapUsers
子元素(作为
用户
元素的同级元素)以提供LDAP凭据。这在VMware的API编程指南中有记录。

他们没有给您举个例子吗?“URL参数”听起来像是你应该做的
https://xx.xx.xx.xx/vCenter-CB/api/login?version=1.5.0
他们没有给出PHP示例,但我有java示例,他们为PostMethod类创建了一个对象,并使用
NameValuePair[]参数设置了版本={new NameValuePair(“version”,“1.5.0”)};post=新的post方法(uri);post.setQueryString(参数)我已尝试
https://xx.xx.xx.xx/vCenter-CB/api/login?version=1.5.0
另外,它仍然在说请求不正确。这很有用。查询字符串是在?在url中,而不是文章的正文。因此,您的做法是正确的,但我不知道您还做错了什么,因为我不知道这个API是什么,也不会阅读它的文档。我仍然无法说出我的错误所在。。有人请帮助我你没有答案的原因是你没有提供足够的信息来帮助你,即使你为你试图提出的请求提供了API规范,你也不可能让别人免费阅读并实现它。