简体   繁体   English

短信 API 问题与 CURL

[英]SMS API issue with CURL

Hi guys Please someone to help me fix an issue with an sms API.大家好,请有人帮我解决短信 API 的问题。 Here is the entire code given by the sms API provider:以下是短信 API 提供商给出的完整代码:

I don't know what is wrong and I don't know how to fix the 415 issue.我不知道出了什么问题,也不知道如何解决 415 问题。 The API provider doens't give coding support 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;
    } 

And here is the code I developped:这是我开发的代码:


  $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;
}

Here is the response displayed:这是显示的响应:

{"type":"https://tools.ietf.org/html/rfc7231#section-6.5.13","title":"Unsupported Media Type","status":415,"traceId":"|54541add-41130078fe10574f."}

Please help me to fix that.请帮我解决这个问题。 Thks谢谢

Change your post fields and headers as per the API provider's sample.根据 API 提供者的示例更改您的帖子字段和标题。 The post fields should be JSON string, not an array. post 字段应该是 JSON 字符串,而不是数组。 The headers array is not an associative array, it is an array of strings. headers 数组不是关联数组,它是字符串数组。

$headers = ["token: {$response}", "content-type: application/json"];
$fields = ['from' => 'From me', 'to' => ['237668426982'], 'type' => 'Text', 'content' => 'message'];
$postFields = json_encode($fields);

And then use them for the cURL request,然后将它们用于 cURL 请求,

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);

On another note, in your code, you have this 'token'=>'$response' , a PHP variable inside single quotes;另一方面,在您的代码中,您有这个'token'=>'$response' ,单引号内的 PHP 变量; this will not work.这行不通。 If the variable has a string literal, then you do not need the quotes at all.如果变量具有字符串文字,那么您根本不需要引号。 If you have to use quotes, then use variables inside double quotes.如果必须使用引号,请在双引号内使用变量。

I hope this helps.我希望这有帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM