2017-07-21 2 views
0

J'essaie d'appeler des paramètres API dynamiquement. Ci-dessous est le codeErreur de requête http incorrecte

<?php 
    $apikey="<API_KEY>"; 
    $senderid="TESTIN"; 
    $channel=2; 
    $dcs=0; 
    $flashsms=0; 
    $number="9171276664,678785612"; 
    $text="Hello Testing message dynamically"; 
    $route="11"; 

    $ch=curl_init("https://www.smsgatewayhub.com/api/mt/SendSMS?APIKey=".$apikey.'&senderid='.$senderid.'&channel='.$channel.'&DCS='.$dcs.'&flashsms='.$flashsms.'&number='.$number.'&text='.$text.'&route='.$route); 
    ?> 

Il lance une mauvaise erreur de requête http !!!

+0

Vous pouvez 'URLEncode' vos paramètres ... – Jimbot

+0

soit un paramètre est manquant ou vous devez encoder votre url –

+0

@ user2179026 Lire [ce] (http://php.net/manual/en /function.http-build-query.php) –

Répondre

2

Vous devez urlencode chaque char, vous pouvez également utiliser http construire requête pour le rendre plus lisible: alors vous pouvez envoyer les erreurs que vous avez si vous avez encore un?

<?php 
    $params = Array(
     'apikey' => "xx", 
     'senderid' => "TESTIN", 
     'channel' => 2, 
     'dcs' => 0, 
     'flashsms' => 0, 
     'number' => "1234,4567", 
     'text' => "Hello Testing message dynamically", 
     'route' => "11" 
    ) ; 

    $url = 'https://www.smsgatewayhub.com/api/mt/SendSMS?'.http_build_query($params) ; 

    $ch=curl_init($url) ; 
?> 
1

Tous les symboles ne sont pas autorisés dans l'URL (par exemple: ';', '/', '?', ':', '@', '=', '&'), vous devez donc utiliser la fonction urlencode pour vos paramètres.

<?php 
... 
$number=urlencode("xxxxxxxxxxxx,xxxxxxxxxxxx"); 
$text=urlencode("Hello Testing message dynamically"); 
... 

$ch=curl_init("https://www.smsgatewayhub.com/api/mt/SendSMS?APIKey=".$apikey.'&senderid='.$senderid.'&channel='.$channel.'&DCS='.$dcs.'&flashsms='.$flashsms.'&number='.$number.'&text='.$text.'&route='.$route); 
?>