
[使用方法]
<?php $c = new TopClient; $c->appkey = $appkey; $c->secretKey = $secret; $req = new AlibabaAliqinFcSmsNumSendRequest; $req->setSmsType("normal"); $req->setSmsFreeSignName("签名"); $req->setSmsParam("{\"datetime\":\"明天\"}"); $req->setRecNum("18012345678"); $req->setSmsTemplateCode("SMS_9526"); $resp = $c->execute($req); [执行完成后会获得一个$resp ,我看了一下结构,这是发送失败的结构]
object(ResultSet)#3 (2) { ["code"]=> int(40) ["msg"]=> string(53) "client-check-error:Missing Required Arguments: recNum" } ResultSet::__set_state(array( 'code' => 40, 'msg' => 'client-check-error:Missing Required Arguments: recNum', )) [这是发送成功的结构]
object(SimpleXMLElement)#4 (2) { ["result"]=> object(SimpleXMLElement)#3 (2) { ["model"]=> string(14) "102419407248^0" ["success"]=> string(4) "true" } ["request_id"]=> string(12) "ztb6uv314i0z" } SimpleXMLElement::__set_state(array( 'result' => SimpleXMLElement::__set_state(array( 'model' => '102419407248^0', 'success' => 'true', )), 'request_id' => 'ztb6uv314i0z', )) [已知的情况是,使用$resp->msg 可以获取失败的信息,通过$resp->result->success 可以获得提交成功的状态]
[问题出来了,如何写判断来确定短信是发送成功了还是失败了,失败了要获得失败原因$resp->msg ,因为状态变量不统一,直接用上面两个其中一个获取状态,代码报错……因为存在$resp->msg 的时候不存在$resp->result->success ,反之亦然。不能作为判断方法] 以下是网上找的判断方法,实测如果返回错误信息, PHP 会报错。
if($resp->result->success) // 如果$resp->result->success节点不存在,PHP会直接报错 { return true; } else { return false; } [由于对于 PHP 还不大熟悉,所以想请教下如何处理此类情况(使用用判断变量类型的方式判断不存在的节点,也报错)]
1 shiny 2016-08-08 15:56:48 +08:00 我是自己写的阿里大鱼接口调用程序,几十行代码而已。 |
3 shiny 2016-08-08 16:04:26 +08:00 @ranran https://api.alidayu.com/doc2/apiDetail?spm=a3142.7791109.1999204071.19.HnaLhS&apiId=25450 1 、调用时候可以选择 simplify=true 来简化返回的结构 2 、如果有 error_response 就是失败了;然后就是判断 result 里的 success 或 err_code 了。 |
4 shiny 2016-08-08 16:05:46 +08:00 可以用 isset 来判断,不会报错 |