vCenterサーバーに関する情報を取得するためにvChargeBack APIを呼び出そうとしています。私はこれに問題があります。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 Bad Requestレスポンスを持っています。私が気づいたのは、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 [] parameters = {new NameValuePair(" version "、" 1.5.0 ")}を使ってバージョンを設定しました。 post =新しいPostMethod(uri); post.setQueryString(parameters); '' https://xx.xx.xx.xx/vCenter-CB/api/login?version = 1.5.0'も試しましたが、それでもやはりBad Requestを言っています。 – Srinath
それは便利です。クエリ文字列は、?の後ろにある部分です。 POSTの本体ではなく、URL内にあります。あなたは正しい方向に進んでいますが、何が間違っているのか分かりません。私はこのAPIが何であるか分かりませんし、ドキュメントも読んでいません。 –