我现在正在使用SOAP API(在工作项目中自学)一段时间。但是一件事总是困扰着我,就是我不知道如何处理空洞的回答。
例如:我打电话给该服务,以从ERP系统中获取一些文章。输入的参数是商品编号或GTIN。
以下是一些示例代码:https://codeshare.io/5e3EYr
例如,如果未设置GTIN(仅出于理解目的),则响应不再是数组(单个或多维)。返回将是一个肥皂错误,例如“致命错误:不能将字符串偏移量用作数组”,因为返回是错误消息。
希望您能理解我的问题。我已经尝试检查它是否为is_array,甚至尝试捕获该字符串。但是我总是收到“致命错误:无法使用字符串偏移量...”消息。
答案 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来捕获这些错误,但是您想过滤掉某些真实性的错误(在错误处理程序中),例如“不推荐使用”或“通知级别”错误。您可以像这样(按位)针对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;
}