У меня возникла ошибка, решения которой я не знаю.
$response = $client->addcontract($docVar,$fVar);
Это ошибка после этой строки кода: Снимок экрана с ошибкой
$client=new SoapClient($wsdlUrl, array('cache_wsdl' => 0,'trace'=>1));
$docVar = new SoapVar($_POST, SOAP_ENC_OBJECT);
$file = array();
$file['file'] = base64_encode(file_get_contents($contract));
$file['filename'] = basename($contract);
$file['mime_type'] = 'application/pdf';
$fVar = new SoapVar($file, SOAP_ENC_OBJECT);
Может можно попробовать разобраться в этой проблеме? Заранее спасибо!
Upd: в моем файле php.ini нет always_populate_raw_post_data
Upd 2: Добавил эту кучу кода:
try {
$response = $client->addcontract($docVar, $fVar);
} catch(SoapFault $fault) {
trigger_error("Error SOAP: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR);
}
Вот что он возвращает: Неустранимая ошибка: ошибка SOAP: (код ошибки: клиент, строка ошибки: похоже, у нас нет XML-документа)
Upd 3: Добавлен код в блок catch.
echo $client->__getLastRequest();
echo $client->__getLastResponse();
И добавил исключения => 1 для SoapClient. Это то, что он возвращает в __getLastResponse (): CException Неопределенное смещение: 1 (/var/www/yii-1.0.9.r1396/framework/base/CApplication.php:608) (/var/www/yii-1.0.9.r1396/framework/web/services/CWebService. php: 103)
Upd 4: нашел код, есть первые строчки:
/**
* @param object post
* @param object file
* @return array
* @soap
*/
public function addcontract($post,$file)
{
if (isset($post))
{
//We need to add the designer,partner,job,customer,document
$model= Partners::model()->findByPk($post->partner_id);
if ($model === null)
{
$model = new Partners();
$model->id=$post->partner_id;
}
Если я попытаюсь повторить / var_dump что-то в этом коде, ничего не произойдет. Но если я сломаюсь; код не перейдет к моей ошибке ошибки мыла.
Upd Last: я опубликовал ответ на этот вопрос в отдельном сообщении с ответом
Функции $client->__getLastRequest(), $client->__getLastResponse() могут дать дополнительную информацию об ошибке.
@avy, если я использую эти функции до ошибки, он покажет мне информацию не о моей ошибке, потому что моя ошибка будет позже. Если я использую эти функции после ошибки, они не будут работать, потому что все после моей ошибки не работает.
Передайте 'exceptions' => true в конструктор SoapClient, затем оберните свой метод в try { } catch { }, и вы сможете передать var_dump последний запрос и ответ внутри блока catch.
@avy Посмотрите Upd 3, я добавил кучу кода
Вы используете Yii? Необходимо убедиться, что эта ошибка исходит от вас.
Я думаю, что проблема связана со вторым веб-сайтом, я предлагаю вам проверить, потому что есть исключение из другого приложения.






Итак, я исправил ошибку. Ошибка в функции $ client-> addcontract (). Я думаю, что это слишком локальная ошибка, поэтому я хочу посоветовать просто проверить, нет ли ошибок в функции мыла.
Возможный дубликат php soap - SoapFault выглядит так, как будто у нас нет XML-документа