SoapFault:看起来我们没有 XML 文档 php 错误
SoapFault: looks like we got no XML document php error
我有一个错误,我不知道解决方法。
$response = $client->addcontract($docVar,$fVar);
这行代码后出现错误:
Error screenshot
$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);
也许你可以试着找出这个问题?提前致谢!
更新:我的 php.ini 文件中没有 always_populate_raw_post_data
更新 2:添加了这组代码:
try {
$response = $client->addcontract($docVar, $fVar);
} catch(SoapFault $fault) {
trigger_error("Error SOAP: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR);
}
这就是它 returns:
致命错误:错误 SOAP:(错误代码:客户端,错误字符串:看起来我们没有 XML 文档)
更新 3:在 catch 块中添加了这组代码
echo $client->__getLastRequest();
echo $client->__getLastResponse();
并为 SoapClient 添加了 'exceptions' => 1。
这就是 returns 在 __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)
更新 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;
}
如果我尝试 echo/var_dump 这段代码中的某些内容,什么也不会发生。但是如果我中断;,代码不会转到我的 soap 错误。
最后更新:我 post 在单独的答案中对此进行了回答 post
所以,我修复了错误。这是 $client->addcontract() 函数中的一个错误。
我认为它是局部错误,所以我想建议只是检查soap函数是否没有错误。
我有一个错误,我不知道解决方法。
$response = $client->addcontract($docVar,$fVar);
这行代码后出现错误: Error screenshot
$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);
也许你可以试着找出这个问题?提前致谢!
更新:我的 php.ini 文件中没有 always_populate_raw_post_data
更新 2:添加了这组代码:
try {
$response = $client->addcontract($docVar, $fVar);
} catch(SoapFault $fault) {
trigger_error("Error SOAP: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR);
}
这就是它 returns: 致命错误:错误 SOAP:(错误代码:客户端,错误字符串:看起来我们没有 XML 文档)
更新 3:在 catch 块中添加了这组代码
echo $client->__getLastRequest();
echo $client->__getLastResponse();
并为 SoapClient 添加了 'exceptions' => 1。 这就是 returns 在 __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)
更新 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;
}
如果我尝试 echo/var_dump 这段代码中的某些内容,什么也不会发生。但是如果我中断;,代码不会转到我的 soap 错误。
最后更新:我 post 在单独的答案中对此进行了回答 post
所以,我修复了错误。这是 $client->addcontract() 函数中的一个错误。 我认为它是局部错误,所以我想建议只是检查soap函数是否没有错误。