php - PHP curl 使用基本授权将表单数据发布到 REST API
问题描述
我是 PHP 新手,我正在为我在大学的一门学科开发一个简单的客户端。该客户端的主要目标是将 CRUD 转换为 JAVA API。经过一番研究,我发现对于像这样的简单客户端,人们使用 CURL。我从未使用过 curl,我不知道我是否做错了什么。当我提交表单时,它没有出现任何错误,但是当我打开邮递员时,我看到我的数据没有成功发布。如果有人可以帮助我,我将不胜感激!
HTML表格:
<form class="form" action="createActivity.php">
<label for="name" class="labelActivityName"><b>Name</b></label>
<input type="text" id="name" placeholder="Name" name="name">
<label for="description" class="labelActivityDescription"><b>Description</b></label>
<textarea id="description" placeholder="Description..." name="description"></textarea>
<button type="submit"><b>Submit</b></button>
</form>
PHP CURL:
$url = "http://localhost:8080/myapi/actvities";
$username = 'user';
$password = 'user123';
$name = (isset($_POST['name']));
$description = (isset($_POST['description']));
$fields = array(
'name' => $name,
'description' => $description
);
$client = curl_init();
curl_setopt($client, CURLOPT_URL, $url);
curl_setopt($client, CURLOPT_RETURNTRANSFER,1);
curl_setopt($client, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($client, CURLOPT_USERPWD, "$username:$password");
curl_setopt($client, CURLOPT_POST, 1);
curl_setopt($client, CURLOPT_POSTFIELDS, $fields);
$response = curl_exec($client);
curl_close($client);
解决方案
函数 isset() 检查是否设置了变量并返回布尔值 true 或 false。您可以使用以下代码:
if (! (isset($_POST['name']) && isset($_POST['description']))) {
http_response_code(422);
echo 'name and description are required.';
exit;
}
$name = $_POST['name'];
$description = $_POST['description'];
推荐阅读
- python-3.x - 小部件作为小部件命令选项的参数
- swift - Swift 中 IBDesignable 视图的自动高度?
- angular - outputHashing 在启用 PWA 的 Angular 中有用吗?
- mysql - 我有一个已经有左连接搜索的 sql 查询,我需要从另一个表中添加另一个比较,并且只显示过滤结果
- c - 如何仅使用 c 中的 std 库水平翻转 uyvy (4:2:2) 图像?
- mysql - 什么是用于生产的良好 mysql grails 设置?
- grpc-python - 在 grpc 中 add_done_callback 的正确方法是什么?
- python - 如何在没有 UnicodeDecodeError 的情况下读取 XML 文件?
- javascript - 如何使用 Javascript 解析/解码 php 编码的 JSON 输出?
- java - Mapstruct 报告策略不适用于嵌套属性