【问题标题】:__soapCall is returning nothing__soapCall 什么也不返回
【发布时间】:2018-07-26 22:24:44
【问题描述】:

我有以下功能:

public function query($sql)
{
    $query = array(
    "queryString"=>$sql
    );
    $queryWrapper = array(
    "query"=>$query
    );

    try {
        $result = $this->_client->__soapCall("query", $queryWrapper, null, $this->_header);
    } catch (SoapFault $e) {
      $this->_client->__getLastResponse();
    }
    return $result;
}

问题是我可以在__soapCall() 之前使用var_dump('anything');exit;,我看到“任何东西”。但是如果我在__soapCall() 之后var_dump('stuff');exit;,我只会得到一个空白页。我var_dump('something');exit; 在捕获中,但我没有看到。它仍然只是一个空白页。我的问题是,这可能是什么原因造成的?我认为如果我的查询中的表不存在,或者我的查询有问题,我会得到某种错误。但是我已经完全蹲下了。

【问题讨论】:

  • stackoverflow.com/questions/6374345/… 可能重复请检查,我相信您的问题已在答案中解决
  • @DmytroZasiadko:我已经尝试了这两个答案,并得到了与上面列出的相同的结果。
  • 那么您是否尝试启用将"exceptions" => true 传递给soap 客户端构造函数并同时捕获\Exception $e 的异常?
  • @DmytroZasiadko:没错。
  • 请记住,如果您看到一个空白页面,则可能是服务器正在响应。尝试查找事务的状态。例如,如果您有 500,则服务器会抛出错误,如果您有 200,则服务器正在响应,无效。

标签: php soap


【解决方案1】:

我会尝试这些场景:

1.纠正例外情况

$this->_client 是标准\SoapClient 的实例吗?如果没有,您的catch 可能会忽略不同的异常。如果您使用的是PHP 7.0 及以上版本,请尝试使用\Throwable,如果使用的是旧版本,请尝试使用\Exception

2。单独运行

如果问题仍然存在,最好将此函数从您的代码库中分离出来并尝试单独运行它。您甚至可以尝试3v4l 等在线工具。

3. Xdebug

如果还是找不到原因,最好用xdebug追踪问题。您可以在这里找到DockerPhpStorm 的简单设置教程:https://medium.com/@pablofmorales/xdebug-with-docker-and-phpstorm-786da0d0fad2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多