【发布时间】:2011-10-07 10:57:12
【问题描述】:
我正在尝试调用 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 Bad Request 响应。我注意到我没有将版本作为 URL 参数发送。 它应该是 名称:版本 价值:1.5.0 我不知道如何将此版本作为 URL 参数发送。我应该将其作为 POSTFIELD 发送,那么我应该如何将 xml 文件作为请求正文发送。
请帮帮我...
问候, 斯林纳特
【问题讨论】:
-
他们不给你一个例子吗? “URL参数”听起来你应该做
https://xx.xx.xx.xx/vCenter-CB/api/login?version=1.5.0 -
他们没有在 PHP 中给出示例,但我在 java 中有示例,他们为 PostMethod 类创建了一个对象并使用
NameValuePair[] parameters = {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,它仍然在说错误的请求。 -
这很有用。查询字符串是 ? 之后的部分。在 url,而不是 POST 的正文中。所以你在正确的轨道上,但我不知道你做错了什么,因为我不知道这个 API 是什么,也不会阅读它的文档。
-
我仍然无法说出我哪里出错了。请有人帮助我
-
您没有答案的原因是您没有提供足够的信息来帮助您,即使您通过为您尝试发出的请求提供 API 规范来提供帮助,您也不太可能让某人阅读并免费为您实施。
标签: php rest restful-authentication