我正在尝试将HTML表单值作为CURLOPT_FIELDS
发送。我的HTML表单:
<form class="form-response" method="POST" action="postform.php">
<h2 class="form-response-heading">get Response</h2>
<input name="phonenumber" class="form-control" type="text" autofocus="" required="" placeholder="phonenumber">
<button class="btn btn-lg btn-primary btn-block" type="submit">Get Response</button>
</form>
目前我的postform.php
是:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.example.com/AccountDetails",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{ \"phonenumber\":\"6282818966317\", \"FullName\":\"Jenny Doe\" }",
CURLOPT_HTTPHEADER => array(
"accept: application/json;charset=UTF8",
"api-key: myapikeynumbers",
"cache-control: no-cache",
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
我尝试过HTML表单会将值传递到CURLOPT_POSTFIELDS =>“ {\” phonenumber \“:\” 6282818966317 \“}”,
到目前为止,如果我手动添加电话号码,postform.php
将返回响应。我想做的是CURLOPT_POSTFIELDS
将自动从HTML表单的phonenumber
输入中获取值。
答案 0 :(得分:1)
您需要将值存储在变量中并传递该变量。
//Somewhere up here, store the post data in a variable something like this:
$phone = $_POST['phonenumber'];
$fullName = $_POST['full_name'];
CURLOPT_POSTFIELDS => "{ \"phonenumber\":\"" .$phone . "\", \"FullName\":\"" . $fullName . "\" }",
我发现将输入存储在变量中使您可以更轻松地使用它们。根据上面的评论,您可能需要查看文档,以查看要连接的API期望什么,并在发送输入之前验证输入是否有效。
答案 1 :(得分:1)
为什么不简单地将所有发布的数据传递到curl
?看来您需要将JSON
发送到您的API端点,所以:
CURLOPT_POSTFIELDS => json_encode($_POST),
您在表单中包含name
和value
的任何字段都将在_POST
中。只需将其传递给curl
。
如果您需要发送的其他字段不在您的表单中,则只需在发送前将它们添加到_POST
数组中即可,例如:
$_POST['FullName'] = "Jenny Doe";
// ... rest of your code
CURLOPT_POSTFIELDS => json_encode($_POST),
您永远不要尝试手动构造JSON
,这很容易出错。只需创建阵列并使用内置工具即可。