[使用方法]
<?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 1
我是自己写的阿里大鱼接口调用程序,几十行代码而已。
|
3
shiny 2016-08-08 16:04:26 +08:00 1
@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 1
可以用 isset 来判断,不会报错
|