php 的卷曲 POST 问题
Curl POST issue with php
我有一个短信服务器可以完美地处理像这样的 curl 请求
curl -X POST http://local_IP/raspisms/api/scheduled/ -H 'X-Api-Key: XXXXXXXXXXXXXXXXXXXX' -d 'text=My%20Message' -d 'numbers=06XXXXXXXX'
我成功地 运行 一个 php 像这样的代码
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://local_IP/raspisms/api/scheduled/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "text=My%Message&numbers=06XXXXXXXX");
$headers = array();
$headers[] = 'X-Api-Key: XXXXXXXXXXXXXXXX';
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
我这样传递消息变量没问题
$text = "My Message";
define('POSTVARS', 'numbers=06XXXXXXXX&text=');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://local_IP/raspisms/api/scheduled/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, POSTVARS.$text);
$headers = array();
$headers[] = 'X-Api-Key: XXXXXXXXXXXX';
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
我无法同时传递消息和 phone 数字变量。我已经尝试了 array() 方式
$data = array("text"=>$messages,
"numbers"=>$tel
);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
对我来说似乎是正确的,但行不通
我也试过了
curl_setopt($ch, CURLOPT_POSTFIELDS, "text={$message}&numbers={$tel}");
我尝试使用双引号 {\"text\":\"$message\"}
也试过这个$url = 'http://api.pushingbox.com/pushingbox?devid=vB9C6311111098CB&sensor=' . $delta . '&temperature=' . $temp;
我不知道该如何解决(我没有收到任何类型的错误)
使用 define('POSTVARS', 'text='.$text.'&numbers='.$tel);
我回显 POSTVAR 得到 text=MyMessage&numbers=06XXXXXXXX
看起来这个解决方案有效,但 api“拒绝”它
拒绝的curl_setopt($ch, CURLOPT_POSTFIELDS, POSTVARS);
和发送的curl_setopt($ch, CURLOPT_POSTFIELDS, "text=MyMessage&numbers=06XXXXXXXX");
之间有什么区别?
问题是它无法处理本地 phone 号码 (06XXXXXXXX) 但国际格式没问题 (+33),因此变量必须以“%2B33XXXXXXXX”开头并且工作正常
我有一个短信服务器可以完美地处理像这样的 curl 请求
curl -X POST http://local_IP/raspisms/api/scheduled/ -H 'X-Api-Key: XXXXXXXXXXXXXXXXXXXX' -d 'text=My%20Message' -d 'numbers=06XXXXXXXX'
我成功地 运行 一个 php 像这样的代码
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://local_IP/raspisms/api/scheduled/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "text=My%Message&numbers=06XXXXXXXX");
$headers = array();
$headers[] = 'X-Api-Key: XXXXXXXXXXXXXXXX';
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
我这样传递消息变量没问题
$text = "My Message";
define('POSTVARS', 'numbers=06XXXXXXXX&text=');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://local_IP/raspisms/api/scheduled/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, POSTVARS.$text);
$headers = array();
$headers[] = 'X-Api-Key: XXXXXXXXXXXX';
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
我无法同时传递消息和 phone 数字变量。我已经尝试了 array() 方式
$data = array("text"=>$messages,
"numbers"=>$tel
);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
对我来说似乎是正确的,但行不通
我也试过了
curl_setopt($ch, CURLOPT_POSTFIELDS, "text={$message}&numbers={$tel}");
我尝试使用双引号 {\"text\":\"$message\"}
也试过这个$url = 'http://api.pushingbox.com/pushingbox?devid=vB9C6311111098CB&sensor=' . $delta . '&temperature=' . $temp;
我不知道该如何解决(我没有收到任何类型的错误)
使用 define('POSTVARS', 'text='.$text.'&numbers='.$tel);
我回显 POSTVAR 得到 text=MyMessage&numbers=06XXXXXXXX
看起来这个解决方案有效,但 api“拒绝”它
拒绝的curl_setopt($ch, CURLOPT_POSTFIELDS, POSTVARS);
和发送的curl_setopt($ch, CURLOPT_POSTFIELDS, "text=MyMessage&numbers=06XXXXXXXX");
之间有什么区别?
问题是它无法处理本地 phone 号码 (06XXXXXXXX) 但国际格式没问题 (+33),因此变量必须以“%2B33XXXXXXXX”开头并且工作正常