Hi guys Please someone to help me fix an issue with an sms API. Here is the entire code given by the sms API provider:
I don’t know what is wrong and I don’t know how to fix the 415 issue. The API provider doens’t give coding support
/* *:: 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
Advertisement
Answer
Change your post fields and headers as per the API provider’s sample. The post fields should be JSON string, not an array. The headers array is not an associative array, it is an array of strings.
$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_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; 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.