2016-02-04 92 views
1

我正在寫一個簡單的web服務方法在php中使用nusoap庫。 我已經在服務器端創建了複雜類型(struct),但我想在方法中實例化該結構,以便我可以返回它。我在here中看到一個示例,但使用關鍵字「」不起作用。它沒有看到ComplexType。 那麼如何在我的LoginTest函數中創建新的ComplexLogin結構?如何在服務器端使用php實例化Nusoap的ComplexType?

//ComplexLoginType 
$server->wsdl->addComplexType('ComplexLogin','complexType','struct','all','', 
array( 
    'EnterpriseId' => array('name' => 'EnterpriseId','type' => 'xsd:int'), 
    'FirstName' => array('name' => 'FirstName','type' => 'xsd:string'), 
    'Password' => array('name' => 'Password','type' => 'xsd:string')) 
    ); 


$server->register(
// method name: 
'LoginTest', 
// parameter list: 
array('name'=>'tns:ComplexLogin'), 
// return value(s): 
array('return'=>'tns:ComplexLogin'), 
// namespace: 
$namespace, 
// soapaction: (use default) 
false, 
// style: rpc or document 
'rpc', 
// use: encoded or literal 
'encoded', 
// description: documentation for the method 
'Login Method' 
); 

回答

0

我不能直接實例化的ComplexType但如果我使用數組,那麼它工作正常。 但是我想知道是否有另一種方法來返回ComplexType而不使用數組?

我在服務器端的完整工作功能;

function LoginTest($mycomplexlogin) 
{ 
    $conn=openConnection(); 
    // Check connection 
    if ($conn->connect_error) 
    { 
     //return("Connection failed: " . $conn->connect_error); 
     return NULL; 
    } 
    $EnterpriseId=mysqli_real_escape_string($conn,$mycomplexlogin["EnterpriseId"]); 
    $FirstName=mysqli_real_escape_string($conn,$mycomplexlogin["FirstName"]); 
    $Password=mysqli_real_escape_string($conn,$mycomplexlogin["Password"]); 

    $result=array('EnterpriseId'=>$EnterpriseId, 'FirstName'=>$FirstName,'Password'=>$Password); 
    return $result; 
}