[英]SMS API issue with CURL
大家好,請有人幫我解決短信 API 的問題。 以下是短信 API 提供商給出的完整代碼:
我不知道出了什么問題,也不知道如何解決 415 問題。 API 提供程序不提供編碼支持
/*
*:: How to generate Token in PHP using our Restful API
*/
"https://restapi.bulksmsonline.com/rest/api/v1/sms/gettoken/username/MYUSERNAME/password/MYPASSWORD",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
/*
*::: How to send sms with your generated Token
*/
"https://restapi.bulksmsonline.com/rest/api/sms/send",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\"from\":\"Sender Name\",\"to\":[\"16813000014\",\"16813000014\"],\"type\":\"Text\",\"content\":\"Sample SMS Content To Be Sent\"}",
CURLOPT_HTTPHEADER => array(
"token : USER TOKEN GENERATED FROM GET TOKEN API",
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
這是我開發的代碼:
$curl=curl_init("https://restapi.bulksmsonline.com/rest/api/v1/sms/gettoken/username/xxxxx/password/xxxxx");
curl_setopt_array($curl,[
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
$ch = curl_init("https://restapi.bulksmsonline.com/rest/api/v1/sms/send");
$field = array('from'=>'From me', 'to'=>'237668426982', 'type'=>'Text', 'content'=>'message');
$head = array('token'=>'$response', 'content-type'=>'application/json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_ENCODING,"" );
curl_setopt($ch, CURLOPT_MAXREDIRS,10 );
curl_setopt($ch, CURLOPT_TIMEOUT,30 );
curl_setopt($ch, CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'POST' );
curl_setopt($ch, CURLOPT_POSTFIELDS,$field );
curl_setopt($ch, CURLOPT_HTTPHEADER,$head );
$output = curl_exec($ch);
$err = curl_error($ch);
curl_close($ch);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $output;
}
這是顯示的響應:
{"type":"https://tools.ietf.org/html/rfc7231#section-6.5.13","title":"Unsupported Media Type","status":415,"traceId":"|54541add-41130078fe10574f."}
請幫我解決這個問題。 謝謝
根據 API 提供者的示例更改您的帖子字段和標題。 post 字段應該是 JSON 字符串,而不是數組。 headers 數組不是關聯數組,它是字符串數組。
$headers = ["token: {$response}", "content-type: application/json"];
$fields = ['from' => 'From me', 'to' => ['237668426982'], 'type' => 'Text', 'content' => 'message'];
$postFields = json_encode($fields);
然后將它們用於 cURL 請求,
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
另一方面,在您的代碼中,您有這個'token'=>'$response'
,單引號內的 PHP 變量; 這行不通。 如果變量具有字符串文字,那么您根本不需要引號。 如果必須使用引號,請在雙引號內使用變量。
我希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.