Codeigniter — как отправить данные API через URL и получить ответ немедленно без перенаправления и действия формы

#php #xml #api #codeigniter #sms-gateway

#php #xml #API #codeigniter #sms-шлюз

Вопрос:

Ниже мой код:

 $sourceaddr = 14045; // Sender ID
$destinationaddr = 08887654657; // Destination Address
$shortmessage = "Hi, this is test"; // Message
$url = http://xyz.li/cdk; //Short URL
  

И я отправляю вышеуказанные данные по указанному ниже URL (предоставленному API трансляции SMS)

 // API for sending SMS
$sent_url = 'http://username:password@ip:port/smsgateway/infobulk?sourceaddr='.$sourceaddr.'amp;destinationaddr='.$destinationaddr.'amp;shortmessage='.urlencode($shortmessage).' '.urlencode($url).'';
  

И если сообщение получено (успешно) по адресу назначения, я получу этот ответ:

 <?xml version="1.0" encoding="iso-8859-1" ?>
<message>
<TrxID>13349105571516524200</TrxID>
<Status>SENT</Status>
</message>
  

Как это сделать с помощью Codeigniter?

Я попытался использовать redirect($sent_url) , но он не получает никакого ответа, это внутренний процесс, поэтому мне не нужно никаких действий формы, спасибо.

Комментарии:

1. Я не могу ответить за codeigniter, но вы ищете его функции curl или даже file_get_contents.

Ответ №1:

Модель

 class Sms_model extends CI_Model {

  var $source; //Source address
  var $dest; //Destination
  var $msg; // Message
  var $url;
  var $api_url;


  function __construct() {
    parent::__construct();
  }

  function Send(){

    $this->api_url = 'http://username:password@ip:port/smsgateway/infobulk';
    $params = $this->source.'amp;destinationaddr='.$this>dest.'amp;shortmessage='.urlencode($this->msg).' '.urlencode($this->url).'';

    $post_data = array(
        "sourceaddr" => $params,
    );

    $stream_options = array(
        'http' => array(
           'method'  => 'POST',
        ),
    );

    $context  = stream_context_create($stream_options);
    $response = file_get_contents($this->api_url, null, $context);

    return $response;
 }
}
  

КОНТРОЛЛЕР

 class Sms extends CI_Controller {

  function __construct() {
    parent::__construct();
  }

  function Index(){
    $this->load->model('Sms_model','sms_m');

    $this->sms_m->source = 14045 ;
    $this->sms_m->dest = 08887654657;
    $this->sms_m->msg = "Hi, this is test";
    $this->sms_m->url = 'http://xyz.li/cdk';

    $data = $this->sms_m->Send();

    print_r($data); 

   }
}
  

Это будет работать на CI. Приветствия.