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 = '';
// ...
}
沒有任何代碼片段沒人能幫助你。但根據我自己的經驗,這是一個數據類型不匹配php和.net。 – Exlord
感謝您的回覆。我檢查了日誌,當它試圖處理Soap請求時,它顯示'PHP Notice:Array to string conversion in /path/to/app/vendor/zendframework/zend-soap/Zend/Soap/Server.php in line 881' 。 – user3135639
看來你的服務器需要s字符串,但是.net客戶端正在發送一個數組:D,'Acme \ Transaction'的結構是什麼,以及如何處理.net客戶端中的服務? – Exlord