【问题标题】:SoapFault: looks like we got no XML document php errorSoapFault:看起来我们没有 XML 文档 php 错误
【发布时间】:2018-09-25 10:29:49
【问题描述】:

我有一个错误,我不知道如何解决。

$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);
}

这是它返回的内容: 致命错误:错误 SOAP:(故障代码:客户端,故障字符串:看起来我们没有 XML 文档)

更新 3:在 catch 块中添加了这串代码

echo $client->__getLastRequest();
echo $client->__getLastResponse();

并为 SoapClient 添加了 'exceptions' => 1。 这是它在 __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 某些内容,则不会发生任何事情。但如果我打破;,代码不会去我的肥皂错误错误。

最后更新:我在单独的答案帖子中发布了这个答案

【问题讨论】:

  • 函数$client->__getLastRequest()$client->__getLastResponse() 可能会提供有关错误的更多信息。
  • @avy 如果我在错误之前使用这些函数,它会显示我的信息而不是关于我的错误,因为我的错误是稍后的。如果我在出错后使用这些函数,它们将无法正常工作,因为我出错后的所有内容都不起作用
  • 'exceptions' => true 传递到SoapClient 构造函数中,然后将您的方法包装在try { } catch { } 中,您应该能够var_dump 最后一个请求和响应在catch 块内。
  • @avy 查看 Upd 3,我添加了一些代码

标签: php soap backend soap-client


【解决方案1】:

所以,我修复了错误。这是 $client->addcontract() 函数中的错误。 我认为这是太局部错误,所以我想建议检查一下soap函数是否没有错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2013-12-26
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多