php - 如何使用 php curl 库包含“data-urlencode”
问题描述
我正在尝试使用 Curl php 连接 twilio api。以下是来自 Twilio api 的代码
我使用了一个在线工具 php 来卷曲,但它没有使用数据编码 url 转换代码。
被标记为重复的问题没有关于 --data-urlencode 的信息。我已经尝试过那里提到的解决方案,但它仍然没有按照预期的方式工作。
curl -X POST https://api.twilio.com/2010-04-01/Accounts/ACCOUNTID/Messages.json \
--data-urlencode "From=+122344444" \
--data-urlencode "Body=Body" \
--data-urlencode "To=+13101111111" \
-u ACCOUNTID:PASSWORD
PHP代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, 'ACCOUNTID' . ':' . 'PASSWORD');
预期的结果是得到消息,但我得到
{"code": 21603, "message": "A 'From' phone number is required.", "more_info": "https://www.twilio.com/docs/errors/21603", "status": 400}
我得到这个的原因是我不确定如何在 curl php 中从 body 和 to 传递。
解决方案
你缺少的是
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payload));
$payload
在哪里
$payload = [
'From' => '+122344444',
'To' => '+13101111111',
'Body' => 'This is the body...'
];
PHP代码:
$payload = [
'From' => '+122344444',
'To' => '+13101111111',
'Body' => 'This is the body...'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, 'ACCOUNTID' . ':' . 'PASSWORD');
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payload));
推荐阅读
- cuda - 在抛出 'thrust::system::system_error' 的实例后调用终止 what(): parallel_for failed: cudaErrorInvalidValue: invalid argument
- typo3 - TYPO3 routeEnhancers 用于新闻存档(DateMenu)和分页
- sql - 从 ROW_Number 中选择连续行
- google-cloud-platform - 将数据从 API 上传到 GCP 数据准备
- java - 如何将列表直接实例化为实际参数?
- javascript - 传单弹出窗口无法更改位置
- python - 如何将一列字符串转换为超链接?
- node.js - 成功购买后如何阻止 Stripe 覆盖客户端的会话 cookie
- python - 可视代码远程终端上的 Anaconda 命令停止工作
- asynchronous - 在 Trio 中,如何在不等待的情况下将数据写入套接字?