簡體   English   中英

短信 API 問題與 CURL

[英]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.

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