[使用方法]
<?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 还不大熟悉,所以想请教下如何处理此类情况(使用用判断变量类型的方式判断不存在的节点,也报错)]
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.