php - 将数据从表单发送到 http post 请求但格式错误?
问题描述
我正在尝试发送发布请求,这是正确的格式
https://domainname.com/dashboard/api?to={PHONE NUMBER}&from={SENDER ID}&message={TEXT}&email={YOUR EMAIL}&api_secret={API SECRET}
这是请求的样子:
https://domainname.com/dashboard/api?to=123456789&from=text&message=text&email=email@email.com&api_secret=123abc
所以我做了一个html表单:
<div class="body">
<form method="post" action="index.php">
<div id="form">
<div class="formInput">
<label>To:
<input type="text" name="to" id="to" />
</label>
</div>
<div class="formInput">
<label>From:
<input type="text" name="from" id="from" />
</label>
</div>
<div class="formInput">
<label>Message:
<input type="text" name="message" id="message" />
</label>
</div>
<div class="formInput">
<label>Email:
<input type="text" name="email" id="email" />
</label>
<div class="formInput">
<label>Api_Secret:
<input type="text" name="api_secret" id="api_secret" />
</label>
</div>
</div>
<input type="submit" value="Submit" />
</div>
</form>
还有一个用 curl 处理数据的 php 文件:
<?php
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://domainname.com/dashboard/api',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => [
'to' => $_POST['to'],
'from' => $_POST['from'],
'message' => $_POST['message'],
'email' => $_POST['email'],
'api_secret' => $_POST['api_secret'],
],
]);
$response = curl_exec($ch);
curl_close($ch);
echo($response);
?>
但它仍然不起作用。我在 postbin 上做了一个请求,查询如下所示:
123456789:
text:
text:
email@email.com:
123abc:
是不是格式不对?我是否以错误的格式发送所有内容?非常感谢您的帮助,因为我在过去 3 天里一直在搞砸这个..
解决方案
您的API似乎接受 GET 请求而不是 POST,您使用 curl的调用是 POST。
因此,您的表单似乎没问题,它们具有 API 所需的所有变量。
现在我认为问题出在你的 index.php 文件(从表单中调用),试试这个:
<?php
//checking for all variables filled in form
if (isset($_POST['to']) && isset($_POST['from']) && isset($_POST['message']) && isset($_POST['email']) && isset($_POST['api_secret'])){
//rebuild API call
$_ENDPOINT_CALL = "https://domainname.com/dashboard/api?to={$_POST['to']}&from={$_POST['from']}&message={$_POST['message']}&email={$_POST['email']}&api_secret={$_POST['api_secret']}";
//cURL GET request
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $_ENDPOINT_CALL
]);
$response = curl_exec($curl);
curl_close($curl);
//write response
echo $response;
}
?>
推荐阅读
- python-3.x - 如何在两个文件之间以及匹配后的行之间编写匹配行
- php - 如何使用 symfony 获取 Doctrine 实体持久化集合数据值
- angular - 重新加载路由器链接onclick
- swift - 斯威夫特4。字典合并
- silverstripe - Silverstripe - 如何创建页面作为部署的一部分?
- java - CRUD 存储库不能在“简单”java 类中工作
- postgresql - 获取 Postgresql 中每个月的最后一个值
- html - CSS 中的定位:将子 DIV 中的文本居中对齐,该子 DIV 已在父 DIV 中水平和垂直对齐
- python - 从子子文件夹导入模块的问题
- php - 通过联系表格在 YII2 中发送电子邮件 发送到另一个地址