簡體   English   中英

Curl POST 問題與 php

[英]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);

我堅持傳遞消息和電話號碼變量。 我已經嘗試了 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; $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"); 哪個是發送的,有什么區別?

問題是它無法處理本地電話號碼(06XXXXXXXX),但國際格式沒有問題(+33),所以變量必須以“%2B33XXXXXXXX”開頭,並且工作正常

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM