我正在嘗試調用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是什麼,也不會閱讀它的文檔。 –