我正在尝试使用php cURL请求执行一系列操作,以返回返回JSON数据的RESTful API。我有第一步工作,即(GET)请求可用资源列表并填充下拉结果:
请求:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://cloud.skytap.com/templates",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"accept: application/json",
"authorization: Basic xxxxxxxxx",
"cache-control: no-cache",
"content-type: application/json",
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
$json = json_decode($response,true);
?>
下拉:
<form action="select-action2.php" method="post">
<select name="users">
<option selected="selected">Select</option>
<?php
$users = $json;
foreach($users as $key => $value){
?>
<option value="<?php echo ($value["id"]); ?>"><?php echo $value["name"]; ?></option>
<?php
}
?>
</select>
<input type="submit" name="submit" value="Submit">
对于第二步,我想将下拉列表中的选定值传递给第二个“操作”页面上的新POST请求,以使用所选ID执行操作。为了实现这一点,我尝试使用第一个下拉列表中的提交将所选值传递给操作页面上的$ tempID变量,然后将此值附加到该操作页面上请求中的URL:
<?php
$tempId = $_POST['users'];
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://cloud.skytap.com/configurations?template_id=".$tempId,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => array(
"accept: application/json",
"authorization: Basic xxxxxxxx",
"content-type: application/json",
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
在传递变量的同时,我可以将操作页面上的下拉值打印到屏幕上,它似乎没有执行请求,因为$ response没有打印到屏幕上,似乎没有采取任何操作在帐户方面。
我可以使用操作页面上的代码通过Postman成功执行此操作(并且请求本身通过Postman生成),所以我必须假设代码本身没问题。我对这个领域很陌生,所以很多都是受过教育的猜测工作。
我已经尝试在网上找到一些答案并检查类似的问题,但我不确定我到底要找什么,并且做得很短。非常感谢任何帮助。