2009-09-21 36 views
1

我在寫PHP Web服務和一個函數。我想在PHP中設置一個Web服務。我需要爲這個Web服務生成WSDL描述,因此可以從Ie訪問它。視覺工作室。它將文檔/搜索字符串作爲輸入並推薦與輸出類似的文檔。我返回一個帶有第一個元素resultCode(int)的數組,該數組顯示操作是成功(1)還是失敗(0)。然而,第二個元素可能是一個錯誤消息(字符串),它告訴用戶哪裏出錯了,或者是一個複雜的返回類型,如具有不同匹配項目的子元素的數組,例如 array(array(「heading」=> 「article heading」,「articleId」=> 12345,「text」=>「文章正文」),array(...),...)。我需要知道如何爲該返回類型生成/寫入WSDL,或者如何在NuSOAP中執行該操作。你會怎麼做?如何聲明返回多個TYPES的PHP函數的WSDL?

這是我目前用來設置服務的一些代碼。

$server->wsdl->addComplexType(
'returnStructBase', 
'complexType', 
'struct', 
'all', 
'', 
array('resultCode' => array('name'=>'resultCode', 'type'=>'xsd:int'), 
     'resultData' => array('name'=>'resultData', 'type'=>'xsd:anyType') 
    ) 
); 
$server->wsdl->addComplexType(
'returnStructArray', 
'complexType', 
'array', 
'', 
'SOAP-ENC:Array', 
array(), 
array(
    array('ref' => 'SOAP-ENC:arrayType', 
      'wsdl:arrayType' => 'tns:returnStructBase[]' 
     )    
    ), 
'tns:returnStructArray' 
); 

$server->register("GetRecommendations", array('username'=>'xsd:string', 'password'=>'xsd:string','articleId'=>'xsd:string', 
       'text'=>'xsd:string', 'returnText'=>'xsd:boolean'), array('return'=>'tns:returnStructArray'), $namespace, $namespace . '#getRecommendations', 'rpc', 'encoded', ' ... '); 

也許PHP的鬆散打字讓我對返回類型使用了糟糕的設計,我需要使用別的東西?

歡迎任何建議。

回答

0

您可以返回

  • 第一個元素:錯誤代碼,0 =不良,1 =好
  • 第二個元素:錯誤消息,如果我們是好的,則爲空
  • 第三個元素:您的複雜類型,如果我們不好,則爲空。
1

可能使用xsd:anytype。事實上,我不會推薦它,因爲基於類型的環境(如.NET和Java)將無法處理您的wsdl。

爲了得到一個乾淨的解決方案我會重新考慮設計的PHP誘惑你...;)