2012-12-17 10 views
0

我使用wsdl2php.php來創建具有基於wsdl的類映射的類。它生成了兩個類,一個用於創建一個帳戶,另一個用於名稱值對。PHP帶有類映射的嵌套SOAP標記

我想弄清楚如何使用類來創建肥皂請求。肥皂服務器是.Net。

這裏是SOAP請求由CreateAccount.asmx頁面上提示:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <CreateAccount xmlns="https://www.mywsdlsitehere.com/Account"> 
     <parameters> 
     <NameValue> 
      <name>string</name> 
      <value>string</value> 
     </NameValue> 
     <NameValue> 
      <name>string</name> 
      <value>string</value> 
     </NameValue> 
     </parameters> 
    </CreateAccount> 
    </soap:Body> 
</soap:Envelope> 

我使用嵌套名稱和值對進入NameValue標籤的幾種方式嘗試。

Fatal error: Uncaught SoapFault exception: [soap:Server] Server was unable to process request. ---> Value cannot be null.

回答

1

沒有創建該服務需求的結構:

這是我最新的,失敗的嘗試:

$createaccount->parameters->fullName='Testy Tester'; 
$createaccount->parameters->userEmail='[email protected]'; 
$createaccount->parameters->accountName='TestyTester'; 
$createaccount->parameters->password='*****'; 

class CreateAccount { 
    public $parameters; // ArrayOfNameValue 
} 

class NameValue { 
    public $name; // string 
    public $value; // string 
} 

public function CreateAccount(CreateAccount $parameters) { 
    return $this->__soapCall('CreateAccount', array($parameters),  array(
      'uri' => 'https://www.mywsdlsitehere.com/Accounting', 
      'soapaction' => '' 
      ) 
    ); 
    } 

我得到的錯誤是。

該服務需要頂級對象CreateAccount,該對象具有parameters屬性,該屬性是一個數組,其中包含多個NameValue對象實例。

我希望是這樣的:

$create = new CreateAccount(); 
$create->parameters = array(); 

$nameValue1 = new NameValue(); 
$nameValue1->name = "Name1"; 
$nameValue1->value = "Value1"; 

$create->parameters[] = $nameValue1; 
+0

感謝斯文。我會爲多個NameValue對做些什麼?例如,3個不同的名稱和值?我會複製$ nameValue1的三行,然後爲每個$ create-> parameters [] = $ nameValue1添加一個新行? – fowbar

+0

我現在有這個:'$ create = new CreateAccount(); $ create-> parameters = array(); $ nameValue1 = new NameValue(); $ nameValue1-> name =「Name1」; $ nameValue1-> value =「Value1」; $ create-> parameters [] = $ nameValue1; $ cr_result = $ account-> CreateAccount($ create); var_dump($ cr_result)' 我得到以下錯誤: 服務器無法處理請求。 --->執行遠程動作時出錯(反序列化對象時出錯)(XML文檔(1,2)有錯誤( ", false) });