我正在尝试调用vChargeBack API来获取有关vCenter Server的信息。我有这个问题。PHP:调用REST api
我必须在请求体中将请求作为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作为URL参数。 它应该是 名称:版本 值:1.5.0 我不知道如何将此版本作为URL参数发送。我应该发送POSTFIELD那么我应该如何发送XML文件作为请求正文。
请帮我...
问候, Srinath
他们不是给你举个例子吗? “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 = new PostMethod(uri); post.setQueryString(parameters);'我也尝试过'https://xx.xx.xx.xx/vCenter-CB/api/login?version = 1.5.0',它仍然在说错误请求。 – Srinath
这很有用。查询字符串是在?之后的部分。在一个url中,不是POST的主体。所以你在正确的轨道上,但我不知道你做错了什么,因为我不知道这个API是什么,也不会阅读它的文档。 –