2014-02-06 38 views
0

我已經使用Zend Soap Server實現了一個Web服務。Zend Soap Server with .NET客戶端 - '未知錯誤'

使用PHP客戶端(Zend客戶端)連接到它,它按預期工作。但是,使用.NET客戶端時,它將返回相當無用的錯誤「未知錯誤」。

錯誤日誌中顯示:

PHP Notice: Array to string conversion in /path/to/app/vendor/zendframework/zend-soap/Zend/Soap/Server.php on line 881 

有沒有人碰到這個問題?這裏是我的服務器代碼:

public function server() 
{ 
    // Soap Server options 
    $options = array(
     'classmap' => array(
      'TransactionType' => 'Acme\TransactionType', 
     ), 
    ); 

    // Create Soap Server 
    $server = new Server(public_path('file.wsdl'), $options); 

    // Bind Class to Soap Server 
    $server->setClass('Acme\Transaction'); 

    // Handle request 
    $server->handle(); 

} 

public function wsdl() 
{ 
    // Output WSDL 
    $autodiscover = new AutoDiscover(new ArrayOfTypeSequence()); 
    $autodiscover->setClass('Acme\Transaction') 
       ->setUri(\URL::route('server')) 
       ->setServiceName('AcmeTransactions'); 
    $wsdl = $autodiscover->generate(); 

    $wsdl->dump(public_path('file.wsdl')); 
} 

的Acme /交易看起來是這樣的:

class Transaction extends \Eloquent 
{ 

/** 
* The database table used by the model. 
* 
* @var string 
*/ 
protected $table = 'transactions'; 

/** 
* The attributes that aren't mass assignable. 
* 
* @var array 
*/ 
protected $guarded = array(); 

/** 
* Saves a TransactionType to the database. 
* 
* @param TransactionType $transaction 
* 
* @return bool 
*/ 
public static function saveTransaction(TransactionType $transaction) 
{ 
    /** 
    * @var Transaction $model 
    */ 
    $model = new self(); 
    $model->fill(
     array(
      'transaction_id'  => $transaction->transaction_id, 
      'transaction_number' => $transaction->transaction_number, 
      // ... 
     ) 
    ); 

    return $model->save(); 
} 

} 

的Acme/TRANSACTIONTYPE看起來是這樣的:

class TransactionType { 

/** 
* @var string 
*/ 
public $transaction_id = ''; 

/** 
* @var string 
*/ 
public $transaction_number = ''; 

// ... 

} 
+0

沒有任何代碼片段沒人能幫助你。但根據我自己的經驗,這是一個數據類型不匹配php和.net。 – Exlord

+0

感謝您的回覆。我檢查了日誌,當它試圖處理Soap請求時,它顯示'PHP Notice:Array to string conversion in /path/to/app/vendor/zendframework/zend-soap/Zend/Soap/Server.php in line 881' 。 – user3135639

+0

看來你的服務器需要s字符串,但是.net客戶端正在發送一個數組:D,'Acme \ Transaction'的結構是什麼,以及如何處理.net客戶端中的服務? – Exlord

回答