SOAP空信封。如何处理空白回复

时间:2018-07-05 18:39:49

标签: php soap error-handling

我现在正在使用SOAP API(在工作项目中自学)一段时间。但是一件事总是困扰着我,就是我不知道如何处理空洞的回答。

例如:我打电话给该服务,以从ERP系统中获取一些文章。输入的参数是商品编号或GTIN。

以下是一些示例代码:https://codeshare.io/5e3EYr

例如,如果未设置GTIN(仅出于理解目的),则响应不再是数组(单个或多维)。返回将是一个肥皂错误,例如“致命错误:不能将字符串偏移量用作数组”,因为返回是错误消息。

希望您能理解我的问题。我已经尝试检查它是否为is_array,甚至尝试捕获该字符串。但是我总是收到“致命错误:无法使用字符串偏移量...”消息。

2 个答案:

答案 0 :(得分:0)

类似(作为我的评论的示例)

class Layer extends Component {
  constructor(props) {
    super(props);
    this.onLayerClick = this.onLayerClick.bind(this);
  }

  onLayerClick(event) {
    console.log(event.target, this.props.layerId);
  };

  render(){
    return <li onClick={this.onLayerClick}>{layerName}</li>;
  }
}

我将由您决定如何设置错误消息的格式。关闭处理程序甚至可以捕获内存错误...:)

很显然,您在注册之前无法捕获任何内容,因此请尽早执行。

php.net/manual/en/function.register-shutdown-function.php

您可能还想看看

  • set_error_handler
  • set_exception_handler

那么您就可以拥有错误处理的三重奏。

您可以使用set_error_handler来捕获这些错误,但是您想过滤掉某些真实性的错误(在错误处理程序中),例如“不推荐使用”或“通知级别”错误。您可以像这样(按位)针对function handleShutdown(){ $lasterror = error_get_last(); if (is_null($lasterror)) { //normal shutdown return false; } //return error to client as XML, JSON etc. // $lasterror['message'] // $lasterror['type'] // $lasterror['file'] // $lasterror['line'] } register_shutdown_function('handleShutdown'); 级别检查严重性来做到这一点

error_reporting

请注意,单个&是按位比较,与普通AND(&&)

不同

现在,如果您想完全避免该错误,则需要查看产生该错误的代码(包括以某种方式标记的行)。否则,这只是疯狂的猜测。

在任何情况下,当构建某种缺少常规GUI的服务时,关闭恢复将反馈发送到客户端都不会带来任何伤害,只需确保清理与客户端共享的所有输出信息即可。这样一来,您就不会“泄漏”可能泄漏任何可能危害您应用程序的信息的信息。

欢呼。

答案 1 :(得分:0)

最后我弄清楚了要检查数组的那一部分。如果不是数组,则什么也不会发生。如果一切正常,就可以了。

if(is_array(['getSomeArticleResult']['SqlRowSet']['diffgram']['SqlRowSet1'])){
$aSuppl = $aSuppl['getSomeArticleResult']['SqlRowSet']['diffgram']['SqlRowSet1']['row'];
return $aSuppl;
}