2014-11-09 72 views
0

我有一组soap API可以执行像登录,注销,keepalive,访问其他几个资源的动作。为了访问其他资源,我必须通过一个会话我从登录api获得的id。会话在5分钟内获得时间。 我很困惑如何使这个工作。如何通过登录和会话codeigniter使用SOAP API

我为我的项目使用codeigniter,并且我已经构建了一个库,其中定义了一组soapAPI请求。

class Soap_api 
{ 
    function __construct() 
    { 

     define("UID",  "myuser"); 
     define("PWD", "34rf3a45575"); 
     define("API_ENDPOINT", "http://uat-api.testingsoapapi.in/services/smp"); 
     define("PRODUCT_CODE", "24"); 
     $resp = $this->keepAliveLib(); 
     if($resp['ResponseCode'] == '0') 
     { 
      define("SessionID",$resp['SessionID']); 
     } 

    } 
    function keepAliveLib() 
    { 
     $resp = $this->login(); 
     return $resp; 
    } 
    function one 
    { 
    //This function needs the sessionID receieved from login function 
    } 
    function two 
    { 
    //This function needs the sessionID receieved from login function 
    } 

所以,当过任何从这个类的功能被访问时,构造函数调用它调用登录功能居住在这个类和会话ID返回构造函数,并将其设置为全局常量会话ID的keepAliveLib所以我调用的函数将使用那个作为常量的会话ID。

这是调用会话中继的API的标准方式吗?调用函数时会调用登录函数,并创建不同的会话ID。库中有一个函数keepAlive可用于维护会话,但不是使用keepAlive,Im每次访问时都会记录一个函数。

这个流程有什么问题吗?可以通过其他方式来完成吗?

回答

0

好吧,我可能不完全理解这一点,但会这项工作?

$resp = $this->keepAliveLib(); 
    if($resp['ResponseCode'] == '0') { 

     $this->sessionid = $resp['SessionID']); } 

    else { // fail gracefully } 

$这 - >的sessionid现在可以在控制器的任何方法。